在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本地环境的整个项目。

广告
将在 10 秒后关闭
bannerAds