如何将Azure VM公共IP地址(由Terraform创建)传递给Ansible?

问题描述 投票:0回答:1

我有一个 main.tf 文件,它创建了我的 Azure VM 和一个用于配置 Azure VM 的 Virtualbox Ubuntu VM。

data "azurerm_public_ip" "vm-publicip" {
  name                = azurerm_public_ip.public.name
  resource_group_name = azurerm_resource_group.main.name
}

output "vm-publicip" {
  value = data.azurerm_public_ip.vm-publicip.ip_address
}

您能否建议如何自动将 Azure VM 的公共 IP 地址传递给 Virtualbox VM 上的 Ansible,以便它可以自动配置 Azure VM?

我想一个可行的解决方案可能是在 Ubuntu VM 上运行 Terraform,但是有没有可以使用的选项?

azure ansible terraform terraform-provider-azure
1个回答
0
投票

根据问题中的代码,我建议使用

terraform_data
资源。然后你会做类似以下的事情:

data "azurerm_public_ip" "vm-publicip" {
  name                = azurerm_public_ip.public.name
  resource_group_name = azurerm_resource_group.main.name
}

resource "terraform_data" "ansible" {
  provisioner "local-exec" {
    command = "echo ${data.azurerm_public_ip.vm-publicip.ip_address} >> /etc/ansible/hosts"
  }
}

output "vm-publicip" {
  value = data.azurerm_public_ip.vm-publicip.ip_address
}
© www.soinside.com 2019 - 2024. All rights reserved.