Terraform を使って VPC 環境を構築する

今更ながら、Terraform に入門してみたので、その時のメモ。

Terraform をインストール

osx の場合、homebrew を使うと簡単にインストールすることができる

$ brew install terraform

プロバイダーの設定

最初に、AWS 使用するための設定を行う。 ファイル名は特に指定はなく、*.tf ファイルを作成すると実行時に読み込んでくれるようだ。 プロバイダーは AWS となるので、テンプレートには AWS を使用するように、provider.tf のファイルを作成し、以下を記述する。

teffraform を使って、AWS の各種サービスを設定する際に アクセスキーとシークレットキーを使用するのだが、 この管理方法はいくつかあるらしい。
ただ、今回は、公式ページに記述されている terraform.tfvarsに記述すする方法を採用する。


<script src="https://gist.github.com/mzumi/e603a88eb2bf20a58862089f9b5659b1.js"></script>


もちろん実際には、取得しているアクセスキーとシークレットキーを記述する。ファイル名は ``` terraform.tfvars ``` にしておくと自動でそこで定義された値が読みこられる。
違うファイル名にした場合は、terraform を実行する際に、
``` -var-file="ファイル名" ```で指定する。


## Terraform で VPC を設定する
まず、VPC の設定を行う。
``` vpc.tf ``` というファイルを作成し、以下を内容を記述する。


<script src="https://gist.github.com/mzumi/3e9268d6e4f49962938fafeef98771d4.js"></script>

とりあえず、状態で dry-run を実行する。
dry-run は ``` terraform plan ``` で実行できる。
実際に実行すると以下のような出力が表示される。

efreshing Terraform state prior to plan…

The Terraform execution plan has been generated and is shown below. Resources are shown in alphabetical order for quick scanning. Green resources will be created (or destroyed and then created if an existing resource exists), yellow resources are being changed in-place, and red resources will be destroyed.

Note: You didn’t specify an “-out” parameter to save this plan, so when “apply” is called, Terraform can’t guarantee this is what will execute.

  • aws_vpc.vpc-1 cidr_block: “” => “10.0.0.0/16” default_network_acl_id: “” => ““ default_security_group_id: “” => ““ dhcp_options_id: “” => ““ enable_classiclink: “” => ““ enable_dns_hostnames: “” => “false” enable_dns_support: “” => “true” instance_tenancy: “” => “default” main_route_table_id: “” => ““ tags.#: “” => “1” tags.Name: “” => “vpc-1”

Plan: 1 to add, 0 to change, 0 to destroy


また、実行すると、``` terraform.tfstat ``` というファイルが
作成される。これはインフラの状態を管理しているファイルらしい。
このファイルはバージョン管理してはいけないので、git の管理下から
外す。(複数人で作業する際は S3 などを使用するらいしいがそれは別の
機会に)

## Terraform を実行
ファイル構成は以下のようになっている。

. ├── provider.tf ├── terraform.tfstate ├── terraform.tfvars └── vpc.tf



実際に実行するコマンドは ```terraform apply``` になる。
実際に実行すると、以下の内容が出力される。

aws_vpc.vpc-1: Creating… cidr_block: “” => “10.0.0.0/16” default_network_acl_id: “” => ““ default_security_group_id: “” => ““ dhcp_options_id: “” => ““ enable_classiclink: “” => ““ enable_dns_hostnames: “” => “false” enable_dns_support: “” => “true” instance_tenancy: “” => “default” main_route_table_id: “” => ““ tags.#: “” => “1” tags.Name: “” => “vpc-1” aws_vpc.vpc-1: Creation complete

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

The state of your infrastructure has been saved to the path below. This state is required to modify and destroy your infrastructure, so keep it safe. To inspect the complete state use the terraform show command.

State path: terraform.tfstate ``` で実際にコンソールで確認すると、、、作成されている!

これだけでは、何もできないので、gateway などを作成する必要があるが、今回はここまで。

Contents

comments powered by Disqus