gpt4 book ai didi

terraform - 检索配置程序命令的值?

转载 作者:行者123 更新时间:2023-12-02 23:04:05 24 4
gpt4 key购买 nike

这与“Capture Terraform provisioner output?”不同。我有一个带有 count 的资源(在本例中为 null_resource)和一个 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 变量中定义命令,并在配置程序和输出中引用它。)

最佳答案

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

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

关于terraform - 检索配置程序命令的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com