インフラ

[Terraform]Cloud9ではじめるTerraform入門 AWS上にVPCを作ってみる

こんにちは、ちゃりお(@chari7311)です!

Terraformはじめました。

Terraform実行環境の構築から、AWS上にVPCを作ってみるところまでやります。

ツール紹介

Terraformとは

Hashicorp社が作成しているプロビジョニングツールです。

コードで定義することで、自動でリソースが作成されます。

AWS,Azure,GCPなど各種クラウドサービスに対応しています。

公式サイト
公式チュートリアル

Cloud9とは

ブラウザ上で、アプリケーション開発ができるツールです。
PCに依存せず開発環境が作れるので、便利です。

AWSアカウントがあればすぐに利用できます。
持っていない場合は、AWSアカウントの作成が必要です。

公式サイト

なぜCloud9?

ブラウザで動作するので、家でも会社でも同じ環境を使えるのが魅力的でした。

ターミナルに直接アクセスできるので、cliでAWSリソースの操作もできて便利でした。

環境構築

Cloud9にTerraform用環境を作る

  1. AWSマネジメントコンソールにログインします
  2. サービス一覧からCloud9を選択します
  3. リージョンを選択する。
    東京リージョンが対応していないため、シンガポールを選択します(2018/12/06現在)
  4. 「Create environment」を選択し、新規に環境を作成します
  5. 「Name」は任意の名前(例: terraform_test)を設定して、「Next Step」をします
  6. 「Configure setting」はデフォルトのまま、「Next Step」をします
  7. 確認画面が表示されるので、「Create environment」を選択します

Terraformをインストールする

Cloud9のターミナルでコマンドを実行します。
ターミナルは、Windowsは「Alt + t」、Macは「Option + t」で開けます。

作業用にフォルダを作成して、作成したフォルダに移動します。

[code lang=text]
$ mkdir terraform
$ cd terraform
[/code]

ダウンロードサイトで最新のバージョンを確認し、Terraformをインストールします。
下記コマンドの「0.11.10」の部分を最新バージョンの番号に変更してください。
(2018/12/06時点では、0.11.10)

[code lang=text]
$ wget https://releases.hashicorp.com/terraform/0.11.10/terraform_0.11.10_linux_amd64.zip
[/code]

ダウンロードしたzipファイルを展開します。

[code lang=text]
$ unzip terraform_0.11.10_linux_amd64.zip
[/code]

パスを通すために、binの下に移動します。

[code lang=text]
$ sudo mv terraform /usr/bin/
[/code]

下記コマンドで、バージョンが表示されることを確認します。

[code lang=text]
$ terraform –version
[/code]

zipファイルはもう使わないので、削除しておきます。

[code lang=text]
$ rm terraform_0.11.10_linux_amd64.zip
[/code]

参考

TerraformでAWS上にVPCを作成する

TerraformでVPCを作成します。

認証情報を「terraform.tfvars」、作成するAWSリソースを「main.tf」に書いています。

フォルダ構造

[code lang=text]
environment
┗terraform
┣.terraform #自動で作成される。プラグイン等が格納されている
┣main.tf
┣terrform.tfvars
┗terrform.tfstate #自動で作成される。リソースの状態を管理している
[/code]

VPCを作成できるユーザのアクセスキー・シークレットアクセスキーが必要になるので、事前に準備しておいくてください。

IAMユーザのアクセスキー管理

terraform.tfvarsファイルを作成する

「terraform.tfvars」として下記のファイルを作成します。

こちらのファイルには秘匿情報を書きます。
githubなどにあげないよう気を付けましょう。
「access_key」「secret_key」には、ユーザのそれぞれのキーを使ってください。

東京リージョンにVPCを作成するため、「region」は「ap-northeast-1」になっています。

terraform.tfvars

VPCの作成のため、main.tfファイルを作成する

tfvarsの方で設定した、キーを使用してAWSリソースを操作します。
VPCを定義しています。

main.tf

「provider」ブロックは、使用するプロパイダを設定します。
今回は「aws」を指定していますが、AzureやGCPも指定できます。

公式ドキュメント Providers

「resource」ブロックは、リソースを定義します。
公式ドキュメントで、パラメータを確認しながら設定していきます。

公式ドキュメント Resorce VPC

terraformコマンドを実行する

コマンドを実行して、定義したリソースを作成してみます。
コマンドは、tfファイルがあるディレクトリで実行してください。

AWS用のプラグインのダウンロード等を行います。
tfファイルを追加した際は、都度打つようにしましょう。

[code lang=text]
$ terraform init
[/code]

ドライランです。
実行する前に、作成されるリソースを確認できます。

[code lang=text]
$ terraform plan
[/code]

リソースを作成します。

[code lang=text]
$ terraform apply
[/code]

作成されたリソースを確認します。

後片付け

リソースを削除する際は、「terraform destroy」を使用します。

[code lang=text]
$ terraform destroy
[/code]

まとめ

TerraformでVPCの作成までやってみました。
初めて触ったのですが、公式ドキュメントやQiitaに情報が多かったので、なんとかなりました。

AWSのCloudformaitnonと比較すると、ドライランが分かりやすくいいです。
リソースの個数を指定することもできるので、より効率的にかけそうです。

関連記事

[Terraform]moduleを使ってVPCを作成してみる moduleを使用するメリット
「DevOpsを支える今話題のHashiCorpツール群について」参加メモ