originbenntou’s blog

技術的なアウトプットを日々まとめる

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って言葉があった気がするけど、分かり次第追記する