terraform 基礎文法
背景
お仕事でterraformをいじることになったので簡単に基礎を学ぶ AWSリソースをコード化する
terraform
プロバイダー
terraformを実行する人は誰か
provider "aws" { access_key = "ACCESS_KEY_HERE" secret_key = "SECRET_KEY_HERE" region = "ap-northeast-1" }
変数
variable
で宣言する
variable "access_key" {} variable "secret_key" {} provider "aws" { access_key = "${var.access_key}" secret_key = "${var.secret_key}" region = "ap-northeast-1" }
リソース
resource {つくりたいリソース} {リソースの名称}
resource "aws_vpc" "myVPC" { cidr_block = "10.1.0.0/16" instance_tenancy = "default" enable_dns_support = "true" enable_dns_hostnames = "false" tags { Name = "myVPC" } }
main.tf, variables.tf
*.tf
だったら自動でテンプレートとして読んでくれる
# main.tf provider "aws" { access_key = "${var.aws_access_key}" secret_key = "${var.aws_secret_key}" region = "${var.region}" } ## リソースの定義を記述 resource "aws_vpc" "myVPC" { cidr_block = "10.1.0.0/16" instance_tenancy = "default" enable_dns_support = "true" enable_dns_hostnames = "false" tags { Name = "myVPC" } } # variables.tf variable "aws_access_key" {} variable "aws_secret_key" {} variable "region" { default = "ap-northeast-1" } variable "images" { default = { us-east-1 = "ami-1ecae776" us-west-2 = "ami-e7527ed7" us-west-1 = "ami-d114f295" eu-west-1 = "ami-a10897d6" eu-central-1 = "ami-a8221fb5" ap-southeast-1 = "ami-68d8e93a" ap-southeast-2 = "ami-fd9cecc7" ap-northeast-1 = "ami-cbf90ecb" sa-east-1 = "ami-b52890a8" } } output "public ip of cm-test" { value = "${aws_instance.cm-test.public_ip}" }
output
はterraformを流したあとに結果を表示してくれる
module
なんかmoduleって言葉があった気がするけど、分かり次第追記する