0

我正在尝试使用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。

有什么推荐吗?

感谢和问候

4

0 回答 0