DockerでTerraformを使う

1 min read読了の目安(約1200字

概要

仕事でTerraformを使い始めたので、備忘録として残しておく。

Docker環境の準備

公式のDockerImageが存在するため、それを利用する。

https://hub.docker.com/r/hashicorp/terraform/

下記の4つのファイルがあれば実行できます。
※ moduleの使い方等はここでは触れません

docker-compose.yml

version: '3'
services:
  terraform:
    container_name: terraform
    image: hashicorp/terraform:0.14.7
    env_file:
      - .env
    volumes:
      - .:/terraform
    working_dir: /terraform
    entrypoint: ash
    tty: true

.gitignore

# IDE
.idea

# env
.env

# Terraform
.terraform
*.tfstate
*.tfstate.backup

.env.example

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

TF_VAR_HOGE=

公式のDockerImageはAWS_KEYの環境変数をセットすれば実行できるようになっています。

main.tf

# Sample

provider "aws" {
  region = "ap-northeast-1"
}

variable "vpc_cidr" {
  default = "10.0.0.0/16"
}

resource "aws_vpc" "main" {
  cidr_block = var.vpc_cidr

  tags = {
    Name = var.app_name
  }
}

使い方

  1. .envを作成してAWSのKEYを入力
    $ cp .env.example .env
    $ vim .env
    
  2. docker-compose upで起動してコンテナ内で実行
    $ docker-compose up -d
    $ docker-compose exec terraform /bin/ash
    
  3. initしてplan...etc
    # terraform init
    # terraform plan
    

注意事項

.envをgit管理するとAWS_KEYが漏れてマイニングとかされるので必ず.gitignoreに入れる事!