用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"
}