用Docker构建Terraform环境

总结

AWS的资源基本上都是使用Terraform进行构建的,但由于不同人的Terraform执行环境存在差异,我对此感到担忧,因此我们的目标是使用Docker尽可能减少差异。在这里,我们进行了最基本的Terraform执行设置。

前提条件 (paraphrased in Chinese)

前提条件如下所示。

    Dockerがインストール済みであること。

构成

目录结构如下:

.
├── .aws (awsの認証情報を格納)
│   ├── config
│   └── credentials
├── docker-compose.yml
├── dockerfile
└── src (Terraformソースを格納)

Dockerfile如下所示,我们安装了最低限度必需的工具,例如aws-cli和Terraform。

FROM python:3.6

# install aws-cli
RUN pip install awscli

# install command
RUN apt-get update && apt-get install -y vim wget unzip vim sudo

# install terraform
RUN wget https://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip
RUN unzip ./terraform_0.13.0_linux_amd64.zip -d /usr/local/bin/

RUN mkdir ~/.aws

# 初期ディレクトリ
WORKDIR /opt

下面是Docker-compose.yml的配置内容。

version: '3'
services:
  terraform_env:
    build: .
    volumes:
      - ./src:/opt/src
      - ./.aws:/root/.aws

建造

我将实际构建Docker环境。
步骤如下:

    イメージのビルド

请执行以下命令,进行镜像构建。

$ docker-compose build
    コンテナの立ち上げ

执行以下命令,在镜像中启动容器。
命令执行后,将登录到容器的/opt目录中。

$ docker-compose run --rm terraform_env bash
Creating work_terraform_env_run ... done
root@cd820124c743:/opt# ls
src
    コマンドの確認

我们需要确认是否安装了Terraform和aws-cli。

root@1a285d2a39e4:/opt# aws --version
aws-cli/1.19.60 Python/3.6.13 Linux/5.10.25-linuxkit botocore/1.20.60
root@1a285d2a39e4:/opt# terraform --version

Your version of Terraform is out of date! The latest version
is 0.15.1. You can update by downloading from https://www.terraform.io/downloads.html
Terraform v0.13.0

接下来,在src/目录下创建Terraform文件,并开始构建实际资源。

备考

在将credentials按照每个配置文件分开时,需要通过Terraform的provider定义要使用的环境。

    credentials
[test_env]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx

[test]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx
provider "aws" {
  region  = "ap-northeast-1"
  profile = "test_env"
}
bannerAds