使用GitHub与Terraform Cloud进行集成(VCS与工作目录设置)- Terraform云探索第2篇
簡單重述
在上一期的文章中(Terraform Cloud その1 – まずは使ってみた(ローカル実行からリモート実行に変更))我们将之前在本地使用的Terraform迁移到了云端。
这次我们想要通过与Github的整合,以实现类似CI/CD的操作。
在这篇文章中实现的目标
-
- GitHub経由でのTerraform Cloudの実行
-
- 1つのVCSリポジトリからstateを分離させ複数のWorkspaceで実行
- Terraform CloudのWorkspace間の連携
这篇文章的目标读者群
-
- Terraform CloudとVCSを連携させたい人
- VCSを使う際のWorkspaceの設定を知りたい人
准备好了
我们需要以下的东西,与之前创建的不同。
- GitHubのアカウント
使用的示例Terraform代码。
这次我们将采用下面的结构,就像我们在这里放置的那样。
├── 说明.md
├── ec2
│ └── 主文件.tf
└── 主文件.tf
variable “aws_access_key” {}
variable “aws_secret_key” {}
variable “region” {
default = “ap-northeast-1”
}
terraform {
backend “remote” {
hostname = “app.terraform.io”
organization = “kuroseets”
workspaces {
name = “vpc-test”
}
}
}
provider “aws” {
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region = var.region
}
resource “aws_vpc” “test” {
cidr_block = “10.0.0.0/16”
tags = {
Name = “test”
}
}
resource “aws_subnet” “test_subnet” {
vpc_id = aws_vpc.test.id
cidr_block = “10.0.0.0/24”
availability_zone = “ap-northeast-1a”
tags = {
Name = “test-a”
}
}
“`
./main.tf
“`
variable “aws_access_key” {}
variable “aws_secret_key” {}
variable “region” {
default = “ap-northeast-1”
}
terraform {
backend “remote” {
hostname = “app.terraform.io”
organization = “kuroseets”
workspaces {
name = “vpc-test”
}
}
}
provider “aws” {
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region = var.region
}
resource “aws_vpc” “test” {
cidr_block = “10.0.0.0/16”
tags = {
Name = “test”
}
}
resource “aws_subnet” “test_subnet” {
vpc_id = aws_vpc.test.id
cidr_block = “10.0.0.0/24”
availability_zone = “ap-northeast-1a”
tags = {
Name = “test-a”
}
}
“`
变量 “aws_secret_key” {}
变量 “region” {
默认值 = “ap-northeast-1”
}
terraform {
远程后端 “remote” {
主机名 = “app.terraform.io”
组织 = “kuroseets”
工作区 {
名称 = “ec2-test”
}
}
}
提供者 “aws” {
访问密钥 = var.aws_access_key
密钥 = var.aws_secret_key
区域 = var.region
}
数据 “aws_vpc” “test” {
标签 = {
名称 = “test”
}
}
数据 “aws_subnet” “test_subnet” {
vpc_id = data.aws_vpc.test.id
标签 = {
名称 = “test-a”
}
}
资源 “aws_instance” “test-ec2-1” {
ami = “ami-0053d11f74e9e7f52”
实例类型 = “t3.micro”
子网_id = data.aws_subnet.test_subnet.id
标签 = {
名称 = “test-ec2-1”
}
}
初始化 Terraform
虚拟专用网络测试
EC2测试
版本控制系統設定
在Terraform Cloud中获取授权回调URL。




请在Github上。
(Github上) 编辑Github。






使用Terraform将GitHub的信息输入并完成连接。




在Github上查看

工作区的设置
这次我打算这样合作。
false
ec2-testtfc-aws-testec2truevpc-test
分开目录和工作空间是因为希望以不同的状态管理EC2的添加和删除。
在工作区中设置存储库。








请在vpc-test和ec2-test中进行上述的设置。
指定目录自动执行Apply和Terraform的操作。

以其他工作区为触发器

确认

总结
这次我们确认了Terraform Cloud和Github的合作。虽然每个工作区和Github都需要进行一些详细的设置和考虑,但毫无疑问,这样就能实现基础设施的CI/CD了。虽然这次我们使用了AWS的构建代码,但下次我们打算利用Terraform Cloud来管理Terraform Cloud,试试看。
相关文章
Terraform Cloud 之一 – 首先尝试使用(从本地执行更改为远程执行)
Terraform Cloud 之二 – 尝试与Github进行集成(设置VCS和工作目录)
Terraform Cloud 之三 – 使用Terraform来管理Terraform Cloud
Terraform Cloud 之四 – 关于在工作区之间共享的私密空间中使用的模块