Terraform 是否检索provisioner命令的值?

Terraform 是否检索provisioner命令的值?,terraform,Terraform,这与“”不同。我有一个资源(本例中为null\u资源)和一个本地执行供应器,该供应器具有一些复杂的插值参数: resource "null_resource" "complex-provisioning" { count = "${var.count}" triggers { server_triggers = "${null_resource.api-setup.*.id[count.index]}" db_triggers = "${var.db_id}"

这与“”不同。我有一个资源(本例中为
null\u资源
)和一个
本地执行
供应器,该供应器具有一些复杂的插值参数:

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
  }
}
我的目标是获得一些输出,比如

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

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

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

resource“null\u资源”“复杂资源调配”{
计数=2
触发器={
command=“echo${count.index}”
}
供应人“本地执行官”{
command=self.triggers.command
}
}
输出“数据”{
值=[
对于null_资源中的触发器。复杂配置。*。触发器:
触发命令
]
}
$terraform应用
null_资源。复杂设置[0]:正在刷新状态。。。[id=9105930607760919878]
null_资源。复杂设置[1]:正在刷新状态。。。[id=405391095459979423]
申请完成!资源:添加0个,更改0个,销毁0个。
产出:
数据=[
“回音0”,
“回声1号”,
]

我尝试过使用console
null\u resource.serverless\u deploy.provisioner.*.command
null\u resource.serverless\u deploy.provisioner[“local exec”]。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",
  ]
}