Chapter 04

【Docker Compose】Terraform設定

himekoh
himekoh
2022.10.26に更新

Docker Desktop  インストール

まだの方は以下を参考に Docker Desktop をインストールしてください。
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/#download-and-install

docker-compose.yml 作成

以下の docker-compose.yml を Terraform コマンドを実行したいディレクトリに配置してください。

docker-compose.yml
version: "3.7"

services:
  terraform:
    image: hashicorp/terraform:1.2.4
    volumes:
      - .:/infra
    working_dir: /infra
    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}
      - TF_CLI_ARGS_plan="--parallelism=20"
      - TF_CLI_ARGS_apply="--parallelism=20"
      - TF_CLI_ARGS_destroy="--parallelism=20"

docker-compose.yml  解説

Docker Compose は複数のコンテナをまとめて起動・削除・管理したい場合に使用する機能です。
今回は使用するコンテナは1つですが、コンテナ使用時のコマンドで各種パラメータ設定を省略するために使用しています。

コンテナは Hashicorp が提供する公式イメージ(hashicorp/terraform)を使用しています。
このイメージには docker-compose.yml ファイル内の image で指定しているタグに対応するバージョンの Terraform が含まれています。
このイメージを使用して毎回コンテナを立ち上げてこのコンテナ内で Terraform コマンドを実行することでイメージタグで指定した Terraform のバージョンを使用することができます。
使用したい Terraform のバージョンに合わせて image: hashicorp/terraform:以降の数字を任意のバージョンに変更してください。

volumes で指定している通り、カレントディレクトリの内容をコンテナ内のディレクトリ(/infra)にマウントしています。

environment に指定している AWS_*** の環境変数は Terraform を使用して AWS リソースを作成する際の Credential を環境変数経由で指定している場合に必要です。
"aws-vault exec"を実行すると使用する Credential に対応する上記の環境変数が自動で設定されます。その環境変数をそのまま使用するコンテナに引き渡しています。

TF_CLI_***の環境変数は Terraform の処理を高速にするために指定しているものなので設定は任意です。