• システム開発に関わる内容をざっくりと書いていく

TerraForm,Foundation部分の例

・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”