gpt4 book ai didi

azure - Terraform 引用循环资源值

转载 作者:行者123 更新时间:2023-12-03 04:25:47 26 4
gpt4 key购买 nike

我正在尝试使用配置程序将新创建的 Azure 实例的公共(public) IP 地址写入文件中。

我能够在一个实例中做到这一点。

resource "azurerm_public_ip" "helloterraformips" {
name = "terraformtestip"
location = "East US"
resource_group_name = "${azurerm_resource_group.test.name}"
public_ip_address_allocation = "dynamic"

tags {
environment = "TerraformDemo"
}
}


resource "null_resource" "ansible-provision" {
depends_on = ["azurerm_virtual_machine.master-vm"]
count = "${var.node-count}"
provisioner "local-exec" {
command = "echo \"[masters]\n ansible_ssh_host=${azurerm_public_ip.helloterraformips.ip_address} \" >> /home/osboxes/ansible-kube/ansible/inventory/testinv"
}
}

问题是,当我尝试在通过 Terraform 循环创建的虚拟机上执行相同操作时,我在尝试访问它们时遇到了问题。

resource "azurerm_public_ip" "mysvcs-k8sip" {
count = "${var.node-count}"
name = "mysvcs-k8s-ip-${count.index}"
location = "East US"
resource_group_name = "${azurerm_resource_group.mysvcs-res.name}"
public_ip_address_allocation = "dynamic"
}

resource "null_resource" "ansible-provision" {

provisioner "local-exec" {
command = "echo \"[masters]\n${element(azurerm_public_ip.mysvcs-k8sip.*.ip_address,count.index)} \" >> /home/osboxes/ansible-kube/ansible/inventory/inventory"
}
}

我收到此错误

资源“azurerm_public_ip.mysvcs-k8sip”没有变量“azurerm_public_ip.mysvcs-k8sip.*.ip_address”的属性“ip_address”

我正在深入研究 Terraform 的语义并尝试各种事情,但到目前为止它不起作用,并且每次迭代创建所有资源也需要时间。任何帮助或提示都会非常有用。

谢谢

最佳答案

我能够执行并使其正常工作的一个解决方法是运行“terraform apply -target=azurerm_virtual_machine.master-vm”,它首先创建虚拟机。然后再次运行 terraform apply ,然后运行一个具有此内容的配置程序

resource "null_resource" "ansible-k8snodes"{
count = "${var.node-count}"

provisioner "local-exec" {
command = "echo \"\n[nodes]\n ${element(azurerm_public_ip.mysvcs-k8sip.*.ip_address,count.index+1)} ansible_ssh_user=testadmin ansible_ssh_pass=Password1234! \" >> /home/osboxes/ansible-kube/ansible/inventory/inventory"
}
}

@Martin - 计数或不计数,这并不重要,而且每次都会失败。事实上,对于我的问题中上面发布的单实例代码来说,它似乎只工作过一次,当我再次尝试时,它不起作用。感谢您的帮助。

关于azure - Terraform 引用循环资源值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43530014/

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