コマンドの用意
terraform コマンドをDockerで用意します。
IAMユーザーの作成¶
まずはAWSのWebコンソールへアクセスしてTerraform実行用のIAMユーザーを作成し、アクセスキーを取得します。
手順¶
AWS WebコンソールからIAMサービスへアクセス

IAMサービスのトップページからユーザー一覧へアクセス。

「ユーザーを追加」を選択し、IAMユーザーの作成開始。

ユーザー名を「terraform」に設定し、「プログラムによるアクセス」を有効化。
「次のステップ:アクセス権限」を押下。

「既存のポリシーを直接アタッチ」を選択し、「AdministratorAccess」ポリシー(管理者権限)を選択。
「次のステップ:タグ」を押下。

タグは入力せず、そのまま「次のステップ:確認」を押下。

「ユーザーの作成」を押下し、IAMユーザーの作成が完了。

アクセスキーを取得できるので、他人にもれないように控える。

シークレットキーをgitへ上げないための保険
commitの内容をスキャンし、AWSアクセスキーが含まれていたらそのcommitをリジェクトしてくれるツールです。
保険のためにもAWSを扱うリポジトリでは有効化しておくと良いでしょう。
awslabs/git-secrets: Prevents you from committing secrets and credentials into git repositories
terraformをDockerで起動¶
Dockerの1つのユースケースとして「コマンドのラップ」があります。
ここではDockerに慣れ親しむためにもDockerでTerraformを起動してみます。
まずはディレクトリの作成をしてチェックアウトします (Desktopへ"terraform"というディレクトリを作成していますが、適宜修正してください)。
$ mkdir ~/Desktop/terraform $ cd ~/Desktop/terraform
次に、TerraformをDockerで起動します。
その際に先程取得したIAMユーザーのアクセス情報を渡すことでTerraformがAWSのAPIへアクセスできるようになります。
また、ホストのカレントディレクトリをコンテナ上へマウント( -v $(pwd):/templates )してファイルの共有を行います。
$ docker run \
-e AWS_ACCESS_KEY_ID=<AWS ACCESS KEY> \
-e AWS_SECRET_ACCESS_KEY=<AWS SECRET ACCESS KEY> \
-v $(pwd):/templates \
-w /templates \
-it \
--entrypoint=ash \
hashicorp/terraform:0.11.12
これでTerraformの実行環境が手に入りました
基本的なコマンド¶
実際にコードを書く前にどんなコマンドがあるか見ておきましょう。
Terraformは基本的以下の4つのコマンドで操作します。
$ terraform init¶
初期化。
コードが依存するプラグインやModuleをダウンロードします。
composer install や npm install のようなイメージが近いです。
$ terraform plan¶
dry-run。
コードとAWSの環境を比較して、プロビジョニング結果を予測してくれます。
ただし、例外的なケース(AWSのリソース上限など)はplanからは予測できません。
$ terraform apply¶
プロビジョニング。
記述したコードを実際の環境に適用します。
$ terraform destroy¶
削除。
管理しているリソースを全て削除します。