・VPC作成:基礎となるVPC作成
作成例:module:source = “terraform-aws-modules/vpc/aws”
・プライベートDNS作成:VPC内のみで名前解決
作成例:module:source = “terraform-aws-modules/route53/aws//modules/zones”
・I AMユーザ作成:後のEC2ユーザ
作成例:module:source = “terraform-aws-modules/iam/aws//modules/iam-user”
・I AMポリシー作成
作成例:module:source = “terraform-aws-modules/iam/aws//modules/iam-policy”
・I AMユーザとポリシーのアタッチ
作成例:resource構文でユーザ名とポリシーは上記で作成したものを想定
resource “aws_iam_user_policy_attachment” “iam_user_policy_attach” {
user = module.iam_user.iam_user_name
policy_arn = module.iam_policy.arn
}
・SSHセキュリティグループ作成:後のEC2に付与
作成例:module:source = “terraform-aws-modules/security-group/aws”
・KeyPair作成:後のEC2に付与
作成例:module:source = “terraform-aws-modules/key-pair/aws”
・amiの取得:後のEC2用
作成例:data構文
data “aws_ami” “amazon_linux” {
most_recent = true
owners = [“amazon”]
filter {
name = “name”
values = [“amzn2-ami-hvm-*-x86_64-gp2”]
}
}
・EC2インスタンスの作成:上記で作成した「セキュリティグループ」「ami」「キーペア」「VPCのパブリックサブネット」を付与、ユーザに作成したI AMユーザ付与
作成例:module:source = “terraform-aws-modules/ec2-instance/aws”
・EIPの作成:作成したEC2をインスタンスに指定
作成例:resource構文でインスタンスは作成したEC2を想定
resource “aws_eip” “eip” {
vpc = true
instance = “${module.ec2.id}”
tags = merge(
var.tags_name,
{ Name = “$eipname” }
)
}
・DNSにEIPを登録:上記で作成したEC2用のEIPをレコードに追加
作成例:module:source = “terraform-aws-modules/route53/aws//modules/records”