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号”,
]
我尝试过使用consolenull\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",
]
}