Carpe Diem

備忘録

TerraformでAWSのVPCを設定

概要

TerraformでVPCの設定をします。
基本的な設定ですが、サブネットは一応AZを考慮して2つ作っています。

環境

  • Ubuntu 14.04
  • Terraform 0.3.7

設定

以下の設定で構築します。

VPC

設定項目 設定値
名前 vpc-1
ネットワークの範囲 10.0.0.0/16

インターネットゲートウェイ

設定項目 設定値
名前 vpc-1-igw
VPC vpc-1

サブネット1

設定項目 設定値
名前 vpc-1-subnet-1a
VPC vpc-1
ネットワークの範囲 10.0.10.0/24
Availability Zone ap-northeast-1a

サブネット2

設定項目 設定値
名前 vpc-1-subnet-1c
VPC vpc-1
ネットワークの範囲 10.0.20.0/24
Availability Zone ap-northeast-1c

ルートテーブル

設定項目 設定値
名前 vpc-1-public-rt
VPC vpc-1
ネットワークの範囲 0.0.0.0/0
Target vpc-1-igw(設定したインターネットゲートウェイ
紐つけるサブネット vpc-1-subnet-1a, vpc-1-subnet-1c

フォルダ構成

ファイル名 役割
config.tf providerにアクセスするための設定
vpc.tf VPC、サブネット、ゲートウェイ等の設定

.tfファイル作成

config.tf

provider "aws" {
    access_key = "xxxxxxxxxxxxxxxxxxx"
    secret_key = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
    region = "ap-northeast-1"
}

vpc.tf

# VPC

resource "aws_vpc" "vpc-1" {
    cidr_block = "10.0.0.0/16"
    tags {
        Name = "vpc-1"
    }
}

# Internet Gateway

resource "aws_internet_gateway" "vpc-1-igw" {
    vpc_id = "${aws_vpc.vpc-1.id}"
    tags {
        Name = "vpc-1-igw"
    }
}

# Subnets

resource "aws_subnet" "vpc-1-subnet-1a" {
    vpc_id = "${aws_vpc.vpc-1.id}"
    cidr_block = "10.0.10.0/24"
    availability_zone = "ap-northeast-1a"
    tags {
        Name = "vpc-1-subnet-1a"
    }
}

resource "aws_subnet" "vpc-1-subnet-1c" {
    vpc_id = "${aws_vpc.vpc-1.id}"
    cidr_block = "10.0.20.0/24"
    availability_zone = "ap-northeast-1c"
    tags {
        Name = "vpc-1-subnet-1c"
    }
}

# Routes Table

resource "aws_route_table" "vpc-1-public-rt" {
    vpc_id = "${aws_vpc.vpc-1.id}"
    route {
        cidr_block = "0.0.0.0/0"
        gateway_id = "${aws_internet_gateway.vpc-1-igw.id}"
    }
    tags {
        Name = "vpc-1-public-rt"
    }
}

resource "aws_route_table_association" "vpc-1-rta-1a" {
    subnet_id = "${aws_subnet.vpc-1-subnet-1a.id}"
    route_table_id = "${aws_route_table.vpc-1-public-rt.id}"
}

resource "aws_route_table_association" "vpc-1-rta-1c" {
    subnet_id = "${aws_subnet.vpc-1-subnet-1c.id}"
    route_table_id = "${aws_route_table.vpc-1-public-rt.id}"
}

計画と実行

$ terraform plan

してエラーがでなければ

$ terraform apply

で反映させてください。

ソース