如何使用相同的模块添加资源?

时间:2019-05-10 16:38:19

标签: terraform terraform-provider-gcp

这里是Terraform的新手。我有一个在GCP中创建实例的模块。我正在使用变量和terraform.tfvars对其进行初始化。我成功创建了一个实例-例如instance-1。但是,当我修改.tfvars文件以创建第二个实例(除了第一个实例)时,它说它必须销毁第一个实例。如何运行模块以“添加”实例,而不是“替换实例”?我知道创建的第一个实例是在terraform.tfstate中。但这不能解释无法“添加”实例的原因。

也许我错了,但我正在将“模块”(及其配置文件)视为函数-这样我可以随时使用不同的参数来调用它们。事实并非如此。

1 个答案:

答案 0 :(得分:1)

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"
}

更好地为每个资源设置tfvars中的特定值

resource "some_resource" "example" {
  count = 2
  name = "example-${count.index}"
  size = ${vars.mysize[count.index]}
}
variable mysize {}

带有tfvars文件:

mysize = ["small", "big"]