【问题标题】:Azure VM Convert Dynamic IP to Static Using TerraformAzure VM 使用 Terraform 将动态 IP 转换为静态
【发布时间】:2021-07-14 20:06:39
【问题描述】:

我的客户希望使用使用 Azure RM Terraform 提供程序动态分配的地址将动态分配给其 VM NIC 的私有 IP 地址转换为静态地址。我在 ARM 中看到了 NIC 到静态的示例位于嵌套的 ARM 模板中,但如何使用 Terraform 来完成?

我们最初将私有 IP 动态地址转换为静态地址的尝试导致我们的 VM 组合创建了两个 NIC,即使使用了之前的 NIC 名称。

有没有办法在不运行组合两次的情况下更新 NIC 配置?

感谢您对此的任何想法。 布莱恩

【问题讨论】:

标签: azure azure-virtual-machine azure-virtual-network terraform-provider-azure


【解决方案1】:

要将动态私有 IP 地址转换为静态 IP 地址,我们可以使用 terraform 调用脚本来管理它,因为 Azure 不会分配动态 IP 地址,直到网络接口连接到正在运行的虚拟机(或其他资源)。

例如,您可以使用 local-exec Provisioner 在创建资源后调用本地可执行文件。

resource "null_resource" "example" {

    provisioner "local-exec" {

   command = <<EOT

      $Nic = Get-AzNetworkInterface -ResourceGroupName ${azurerm_resource_group.main.name} -Name ${azurerm_network_interface.nic.name}
      $Nic.IpConfigurations[0].PrivateIpAllocationMethod = "Static"
      Set-AzNetworkInterface -NetworkInterface $Nic
   EOT
   
   interpreter = ["PowerShell", "-Command"]
  
  }
}

Here 是我在您获得参考之前发布的答案。

【讨论】:

  • 如果使用 Terraform Enterprise,我们如何使用本地供应商?不过我喜欢这个主意。
  • 对不起,Terraform Enterprise我没用过,可以请教支持here
  • 根据 Terraform 的文档,使用 null 提供程序并使用 local-exec 是一个坏主意,因为它可能会破坏状态,更不用说在 TFE 容器上安装额外的软件也是有风险的。 (terraform.io/docs/cloud/run/…)。
  • 如果您不使用 local-exec,您可以像我的链接答案一样直接将静态 IP 分配给网卡。据我所知,目前还没有更好的方法直接将动态IP转为静态。
  • 使用 local-exec 配置器时,如果我们使用 AZCLI 或 PowerShell 将 NIC 转换为静态,这将如何影响 TFE 管理 VM 状态的方式?
猜你喜欢
  • 2016-03-25
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 2014-09-10
  • 2012-12-13
  • 1970-01-01
  • 2018-10-21
  • 2013-05-14
相关资源
最近更新 更多