在Docker容器中执行Terraform和AWS CLI的方法
首先
我想方便地使用Terraform和AWS CLI,而不会破坏本地环境…
在本文中,我们将介绍如何使用Terraform和AWS CLI的官方Docker镜像,在Docker容器中运行针对AWS环境的Terraform和AWS CLI。
Terraform是一种工具,可以根据Terraform配置文件自动构建各种云服务(如AWS)的环境。与使用AWS的Web控制台创建环境不同,可以使用Terraform配置文件来创建、更改和删除环境,非常方便。
AWS CLI 是一个可以通过命令行界面进行 AWS 操作的工具。
前提条件
-
- AWSアカウントを持っている
-
- Dockerがインストールされている
Windowsの場合: Docker Desktop for Windows
Macの場合: Docker Desktop for Mac
使用Terraform和AWS CLI进行环境配置。
文件结构
我会按照下面的结构创建文件。
version: '3'
services:
terraform:
image: hashicorp/terraform:1.0.6
env_file:
- ./.aws/aws.env
volumes:
- ./terraform:/terraform
working_dir: /terraform
entrypoint: sh
tty: true
aws-cli:
image: amazon/aws-cli:2.2.36
env_file:
- ./.aws/aws.env
volumes:
- ./aws-cli:/aws-cli
working_dir: /aws-cli
entrypoint: sh
tty: true
.terraform
*.tfstate
*.tfstate.*
aws.env
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=ap-northeast-1
AWS_DEFAULT_REGION=ap-northeast-1
# プロバイダ
provider "aws" {
region = "ap-northeast-1"
}
# VPC
resource "aws_vpc" "test-vpc" {
cidr_block = "10.1.0.0/16"
instance_tenancy = "default"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "test-vpc"
}
}
将IAM的访问密钥和秘密访问密钥进行设置。
请登录您的AWS账户,并在以下页面上创建IAM访问密钥和秘密访问密钥。
- AWSのIAMアクセスキーの作成画面
复制以下环境变量文件,并设置IAM的访问密钥和秘密访问密钥。
コピー元: /.aws/aws.env.default
コピー先: /.aws/aws.env
/.aws/aws.env の追記例:
AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXX
为避免成为非法访问的原因,请不要将/.aws/aws.env推送到Git等。我们已经在/.gitignore中将/.aws/aws.env排除在Git的跟踪范围之外。
执行Terraform。
请执行以下命令来运行Terraform。
这次我们将以test-vpc的名称创建一个VPC作为示例。
执行目标文件:/terraform/test/main.tf
> docker-compose up -d
> docker-compose exec terraform sh
# cd /terraform/test/
# terraform init (Terraformの初期化を行う。初回に1回だけ実行)
# terraform plan (AWSの変更内容を確認します。まだAWSには反映されません)
# terraform apply (実際にAWS上にtest-vpcのVPCを作成します。
「Enter a value:」と表示されるので「yes」を入力します)
# terraform destroy (AWS上のtest-vpcのVPCを削除します。
「Enter a value:」と表示されるので「yes」を入力します)
# exit
> docker-compose down (もうDockerコンテナを利用しない場合)
执行AWS CLI
使用以下命令来运行AWS CLI。
本次示例将显示EC2的区域列表。
> docker-compose up -d
> docker-compose exec aws-cli sh
# aws ec2 describe-regions (EC2のリージョン一覧を表示。エラーになる場合は /.aws/aws.env の内容が間違っている。q を入力すると終了)
# exit
> docker-compose down (もうDockerコンテナを利用しない場合)
总结
通过在Docker容器上使用Terraform和AWS CLI,我们可以方便地使用Terraform和AWS CLI而不会污染本地环境。
通过在此文件结构中使用git等进行源代码管理,当有新的项目成员加入时,只需执行git的clone命令和docker-compose up -d命令便可快速创建具有相同版本的Terraform和AWS CLI本地环境的整个项目。