在资源存在时使用数据,否则创建一个新资源



terraform有资源和数据。 资源创造了一个新事物,而数据指的是现有的事物。

是否可以执行以下操作? 1( 如果资源没有退出,则通过"资源"创建一个新资源 2( 如果存在,请通过"数据"来引用它

例如

# if not exists
resource "a" "b" { name = ...}
# else 
data "a" "b" {name = ...}
resource "c" "d" {
field = "${element(concat(a.b.*.name, data.a.b.*.name), 0)}"
}

Hashicorp 关于有条件创建资源的博客文章回答了一个与 OP 提出的问题不同的问题。

不幸的答案是,使用股票 Terraform 无法检查资源是否存在,只能断言它存在(通过数据源定义(或不存在(通过资源定义(,并在它们之间交替使用标志(通常是布尔值,但也可以使用其他数据类型(。

在很多可以想象的情况下,检查资源是否存在将是一项有用的功能,但在数据源能够提高忽略错误和检查成功/失败的能力之前,自定义提供程序或具有本地 exec(或远程执行(预配程序的 null 资源需要解决此限制。

这篇博文描述了一种完成您尝试执行的操作的方法,方法是使用具有最小必需(共享(属性的object类型的变量并将其传入。

最新更新