【问题标题】:Retrieve the value of a provisioner command?检索供应商命令的值?
【发布时间】:2020-04-13 21:44:13
【问题描述】:

这与“Capture Terraform provisioner output?”不同。我有一个资源(在这种情况下为 null_resource),其中包含一个 count 和一个 local-exec 配置器,其中包含一些复杂的插值参数:

resource "null_resource" "complex-provisioning" {
  count = "${var.count}"

  triggers {
    server_triggers = "${null_resource.api-setup.*.id[count.index]}"
    db_triggers   = "${var.db_id}"
  }

  provisioner "local-exec" {
    command = <<EOF
${var.init_command}
do-lots-of-stuff --target=${aws_instance.api.*.private_ip[count.index]} --bastion=${aws_instance.bastion.public_ip} --db=${var.db_name}
EOF
  }
}

我希望能够显示供应商所做的输出(这不是有效的 Terraform,只是我想要的模型):

output "provisioner_commands" {
  value = {
    api_commands = "${null_resource.complex-provisioning.*.provisioner.0.command}"
  }
}

我的目标是获得一些输出,例如

provisioner_commands = {
  api_commands = [
    "do-lots-of-stuff --target=10.0.0.1 --bastion=77.2.4.34 --db=mydb.local",
    "do-lots-of-stuff --target=10.0.0.2 --bastion=77.2.4.34 --db=mydb.local",
    "do-lots-of-stuff --target=10.0.0.3 --bastion=77.2.4.34 --db=mydb.local",
  ]
}

我可以读取配置器配置并像这样输出吗?如果没有,是否有不同的方式来获得我想要的东西? (如果我不需要运行资源数组,我会在 local 变量中定义命令,并在配置器和输出中引用它。)

【问题讨论】:

  • 我试过使用控制台。 null_resource.serverless_deploy.provisioner.*.commandnull_resource.serverless_deploy.provisioner["local-exec"].command。也没有成功。

标签: terraform


【解决方案1】:

您无法从 local-exec 配置程序块中获取插值命令,但如果将相同的插值放入触发器中,则可以使用 0.12.x 中的 for 表达式在输出中检索它

resource "null_resource" "complex-provisioning" {
  count = 2

  triggers = {
    command = "echo ${count.index}"
  }

  provisioner "local-exec" {
    command = self.triggers.command
  }
}

output "data" {
  value = [
    for trigger in null_resource.complex-provisioning.*.triggers:
    trigger.command
  ]
}
$ terraform apply
null_resource.complex-provisioning[0]: Refreshing state... [id=9105930607760919878]
null_resource.complex-provisioning[1]: Refreshing state... [id=405391095459979423]

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

data = [
  "echo 0",
  "echo 1",
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 2016-05-12
    • 2012-05-24
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多