Terraform 如何使用同一模块添加资源?

Terraform 如何使用同一模块添加资源?,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,这里是地形新手。我有一个模块,它在GCP中创建一个实例。我正在使用变量和terraform.tfvars来初始化它们。我成功创建了一个实例,比如instance-1。但是当我修改.tfvars文件以创建第二个实例(除了第一个实例之外)时,它表示必须销毁第一个实例。如何运行模块“添加”实例,而不是“替换实例”?我知道创建的第一个实例是terraform.tfstate。但这并不能解释为什么不能“添加”实例 也许我错了,但我把“模块”(及其配置文件)看作函数——这样我就可以随时用不同的参数调用它们。

这里是地形新手。我有一个模块,它在GCP中创建一个实例。我正在使用变量和terraform.tfvars来初始化它们。我成功创建了一个实例,比如instance-1。但是当我修改.tfvars文件以创建第二个实例(除了第一个实例之外)时,它表示必须销毁第一个实例。如何运行模块“添加”实例,而不是“替换实例”?我知道创建的第一个实例是terraform.tfstate。但这并不能解释为什么不能“添加”实例


也许我错了,但我把“模块”(及其配置文件)看作函数——这样我就可以随时用不同的参数调用它们。情况似乎并非如此。

Terraform将尝试维护与您的资源定义匹配的已部署资源。 如果同时需要两个实例,那么应该在.tf文件中描述它们

相同的实例,在定义中添加一个计数

resource "some_resource" "example" {
  count = 2
  name = "example-${count.index}"
}
示例:两种不同的资源,具有特定的值

resource "some_resource" "example-1" {
  name = "example-1"
  size = "small"
}
resource "some_resource" "example-2" {
  name = "example-2"
  size = "big"
}
更好的是,您可以在TFVAR中为每个资源设置特定的值

resource "some_resource" "example" {
  count = 2
  name = "example-${count.index}"
  size = ${vars.mysize[count.index]}
}
variable mysize {}
使用tfvars文件:

mysize = ["small", "big"]