使用docker-compose和make构建最强的Terraform本地执行环境

已经形成了Terraform本地执行环境的个人最佳实践…啊!!- Toshii@基础架构工程师 (@Tocyuki) 2020年5月26日

因此,我想向大家介绍一下我个人关于Terraform本地执行环境的最佳实践方案!

这次要做的事情 cì zuò de

    • Terraformで作成するリソースはVPCのみ

docker-compose + make によるTerraformローカル実行環境の構築

目录结构

目录结构大概是这样的,简而言之,我们使用Hashicorp官方的Terraform Docker镜像来准备Terraform的执行环境,并使用make命令来封装。

.
├── LICENSE
├── Makefile
├── README.md
├── docker-compose.yml
└── terraform
    ├── main.tf
    └── modules
        └── aws
            └── network
                ├── variables.tf
                └── vpc.tf

关于每个文件

vpc.tf的中文释义。

只是创建一个10.0.0.0/16的虚拟专用云(VPC)!

resource "aws_vpc" "vpc" {
  cidr_block           = var.vpc_cidr
  enable_dns_support   = true
  enable_dns_hostnames = true
}

docker-compose.yml的中文翻译可以是:镜像编排文件。

使用Hashicorp官方提供的Docker镜像进行配置的docker-compose.yml!

version: '3.6'

services:
  terraform:
    image: hashicorp/terraform:0.12.24
    container_name: terraform
    volumes:
      - ./terraform:/terraform
    env_file: .env
    working_dir: /terraform

顺便一提,.env文件只需填写 AWS 的凭证!

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=

生成文件

.PHONY: init plan apply destroy check

init: check
	@docker-compose run --rm terraform init

plan: check
	@docker-compose run --rm terraform plan

apply: check
	@docker-compose run --rm terraform apply

destroy: check
	@docker-compose run --rm terraform destroy

check:
	@docker-compose run --rm terraform fmt -recursive
	@docker-compose run --rm terraform fmt -check
	@docker-compose run --rm terraform validate

有了Makefile,您可以很容易地通过make命令来执行Terraform!

➜  terraform-best-executable-env (master) ✗ make check   
docker-compose run --rm terraform fmt -recursive
docker-compose run --rm terraform fmt -check
docker-compose run --rm terraform validate
Success! The configuration is valid.

因此

最近,我正在使用类似的方法使用Ansible和Packer等工具创建本地执行环境。个人觉得这种方式非常简洁,通过命令执行非常顺利,感觉很不错。所以请务必试一试看看吧^^

代码已经上传到GitHub,顺便使用GitHub Actions轻松搭建了Terraform的CI环境,非常简单易用。如果你感兴趣的话,可以去看看哦!

广告
将在 10 秒后关闭
bannerAds