Terraform 根据随机的\u string.result,从null\u resource.triggers.string输出地形

Terraform 根据随机的\u string.result,从null\u resource.triggers.string输出地形,terraform,Terraform,下面的Terraform代码片段分析了一个感觉应该可以解决的资源相互依赖关系 resource "random_string" "random-string" { length = 8 } resource "null_resource" "null-resource" { triggers = { string = "foobar-${random_string.random-string.result}-barfoo" } depends_on = ["random

下面的Terraform代码片段分析了一个感觉应该可以解决的资源相互依赖关系

resource "random_string" "random-string" {
  length = 8
}

resource "null_resource" "null-resource" {
  triggers = {
    string = "foobar-${random_string.random-string.result}-barfoo"
  }
  depends_on = ["random_string.random-string"]
}

output "output-value" {
  value = "${null_resource.null-resource.triggers.string}"
}
错误响应错误似乎暗示(试图)在不首先创建资源的情况下解析输出值:-

output.output-value: Resource 'null_resource.null-resource' does not have attribute 'triggers.string' for variable 'null_resource.null-resource.triggers.string'
有没有其他方法可以实现类似的目标


作为参考,Terraform v0.11.7

在Terraform null_资源中,唯一导出的属性是id。触发器不是导出的参数属性。它指定何时重新创建此null_资源,因此我们不能将此属性用作打印

我们可以在下面做一些事情来打印

resource "random_string" "random-string" {
  length = 8
}

resource "null_resource" "null-resource" {
  triggers = {
    string = "foobar-${random_string.random-string.result}-barfoo"
  }
  depends_on = ["random_string.random-string"]
}

data "null_data_source" "discovery" {
  inputs = {
    string1 = "foobar-${random_string.random-string.result}-barfoo"
  }
}

output "output-value" {
  value = "${data.null_data_source.discovery.inputs}"
}
希望这有帮助

问候
Sudhakar

最合理的方法似乎是使用@ydaetskcoR在对原始帖子的评论中建议的方法

resource "random_string" "random-string" {
  length = 8
}

locals {
  random_string = "${random_string.random-string.result}"
  secondary_string = "foobar-${local.random_string}-barfoo"
}

output "output-value" {
  value = "${local.secondary_string}"
}

这发生在
地形规划期间
?这不起作用,因为只有当随机字符串发生变化时,空资源上的触发器才会发生变化,除非您明确污染了随机字符串资源,否则不会发生这种情况。这意味着您的输出依赖于可能不会触发的空资源,因此正确地抱怨。您可以通过设置
TF\u WARN\u OUTPUT\u ERRORS=1将错误强制为警告,从而从技术上实现这一点。您还应该能够在此处使用局部变量,以更好地构建插入随机字符串(或任何其他变量/资源输出)的字符串。是的-此处的方法看起来可行感谢@ydaetskcoR-确认局部变量方法工作良好