
テラフォームでAWSを構築していきたいと思います。条件としては以下のようになります
条件
- VPC:新規で作成
- ゾーン:ap-northeast-1a
- サブネット:10.0.2.0/24
- エラスティックIP:自動取得
- セキュリティー:22番、80番、443番許可
- OS:AmazonLinux2
- CPU:インテル系
- インスタンス:t2.micro
- EBS:30GB
となります
main.cf
002 | variable "aws_access_key" {} |
003 | variable "aws_secret_key" {} |
004 | variable "aws_region" {} |
005 | variable "aws_vpc_cidr" {} |
006 | variable "aws_vpc_tags_name" {} |
011 | access_key = var.aws_access_key |
012 | secret_key = var.aws_secret_key |
013 | region = var.aws_region |
017 | resource "aws_vpc" "main" { |
018 | cidr_block = var.aws_vpc_cidr |
019 | instance_tenancy = "default" |
020 | enable_dns_support = "true" |
021 | enable_dns_hostnames = "true" |
024 | Name = var.aws_vpc_tags_name |
029 | resource "aws_subnet" "public_1a" { |
030 | # 先程作成したVPCを参照し、そのVPC内にSubnetを立てる |
031 | vpc_id = "${aws_vpc.main.id}" |
034 | availability_zone = "ap-northeast-1a" |
036 | cidr_block = "10.0.2.0/24" |
039 | Name = "terraform-subnet" |
044 | resource "aws_internet_gateway" "main" { |
045 | vpc_id = "${aws_vpc.main.id}" |
048 | Name = "terraform-gateway" |
054 | resource "aws_route_table" "public" { |
055 | vpc_id = "${aws_vpc.main.id}" |
058 | Name = "terraform-public" |
063 | resource "aws_route" "public" { |
064 | destination_cidr_block = "0.0.0.0/0" |
065 | route_table_id = "${aws_route_table.public.id}" |
066 | gateway_id = "${aws_internet_gateway.main.id}" |
069 | resource "aws_route_table_association" "public_1a" { |
070 | subnet_id = "${aws_subnet.public_1a.id}" |
071 | route_table_id = "${aws_route_table.public.id}" |
076 | resource "aws_security_group" "handson_ec2_sg" { |
077 | name = "terraform-handson-ec2-sg" |
078 | description = "For EC2 Linux" |
079 | vpc_id = aws_vpc.main.id |
081 | Name = "terraform-handson-ec2-sg" |
090 | cidr_blocks = [ "0.0.0.0/0" ] |
094 | resource "aws_security_group_rule" "inbound_http" { |
103 | # ここでweb_serverセキュリティグループに紐付け |
104 | security_group_id = "${aws_security_group.handson_ec2_sg.id}" |
108 | resource "aws_security_group_rule" "inbound_https" { |
117 | # ここでweb_serverセキュリティグループに紐付け |
118 | security_group_id = "${aws_security_group.handson_ec2_sg.id}" |
122 | resource "aws_security_group_rule" "inbound_ssh" { |
131 | # ここでweb_serverセキュリティグループに紐付け |
132 | security_group_id = "${aws_security_group.handson_ec2_sg.id}" |
ec2.tf
03 | # --------------------------- |
05 | # --------------------------- |
06 | # Amazon Linux 2 の最新版AMIを取得 |
07 | data "aws_ssm_parameter" "amzn2_latest_ami" { |
08 | name = "/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-gp2" |
09 | #name = "/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-2.0.20220912.1-arm64-gp2" |
13 | resource "aws_instance" "handson_ec2" { |
14 | ami = data.aws_ssm_parameter.amzn2_latest_ami.value |
15 | instance_type = "t2.micro" |
16 | #availability_zone = ap-northeast-1a |
17 | vpc_security_group_ids = [aws_security_group.handson_ec2_sg.id] |
18 | subnet_id = aws_subnet.public_1a.id |
19 | associate_public_ip_address = "true" |
20 | key_name = "terraform" |
28 | Name = "terraform-handson-ec2" |
33 | resource "aws_eip" "public_ip" { |
34 | instance = aws_instance.handson_ec2.id |
37 | Name = "terraform-public_ip" |
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS