我正在尝试使用Terraform Cloud和 github 自动部署一个简单的 EC2 实例。
我做了一个简单的 repo 来配置 EC2 实例。
结构:
.
├── README.md
├── ec2
│ ├── ec2.tf
│ ├── outputs.tf
│ └── vars.tf
├── main.tf
├── vars.tf
├── example.auto.tfvars
主文件
provider "aws" {
region = "us-east-1"
}
module "ec2" {
source = "./ec2"
resource_name = var.resource_name
subnet_id = var.subnet_id
}
vars.tf(两者相同)
variable "resource_name" {
default = {}
}
variable "subnet_id" {
default = {}
}
例子.auto.tfvars
resource_name = "example"
subnet_id = "XXXXXX"
ec2.tf
data "aws_ami" "example" {
most_recent = true
owners = [
"amazon"]
filter {
name = "image-id"
values = [
"ami-0323c3dd2da7fb37d"]
}
filter {
name = "root-device-type"
values = [
"ebs"]
}
filter {
name = "virtualization-type"
values = [
"hvm"]
}
}
resource "aws_instance" "web" {
ami = data.aws_ami.example.id
instance_type = "t2.micro"
subnet_id = var.subnet_id
tags = {
Name = var.resource_name
}
}
基本上我要做的是更改resource_name值,将代码推送到 git 并获取一个新的 ec2 实例。但是每次我这样做时,以前的 EC2 都会被销毁。我相信我并不完全理解 tfstate 概念:S。
有什么推荐吗?
感谢和问候