Как я могу получить частные IP-адреса виртуального набора Azure с помощью terraform? - PullRequest
0 голосов
/ 31 октября 2018

Мне интересно, как я могу получить частный IP-адрес виртуальной машины с помощью Terraform-provider-azurerm? Я думаю, что нет ни ресурсов, ни ресурсов данных, напрямую возвращающих IP-адреса виртуальных машин.

Один из вариантов, который я пробовал - генерировать шеллскрипт через ресурс шаблона.

# get_vmss_privateip.tpl
#!/bin/bash

cap=`az vmss show \
    --resource-group ${resource_group} \
    --subscription ${subscription} \
    --name ${name} \
    --query 'sku.capacity'`
for i in `seq 1 $cap`
do
az resource show \
    --resource-group ${resource_group} \
    --resource-type Microsoft.Compute/virtualMachineScaleSets \
    --api-version 2017-03-30 \
    --name ${name}/virtualMachines/$i/networkInterfaces \
    --query 'value[0].properties.ipConfigurations[0].properties' \
| jq -c '{privateIPAddress}'
done

затем запустите terraform для генерации sh.

data "template_file" "private_ip_scripts" {
  template = "${file("templates/get_vmss_privateip.tpl")}"

  vars {
    resource_group = "${data.azurerm_resource_group.current.name}"
    subscription   = "${data.azurerm_subscription.current.subscription_id}"
    name           = "${azurerm_virtual_machine_scale_set.test.name}"
  }
}

resource "local_file" "test_private_ip_scripts" {
  filename = "scripts/get_vmss_instance_private_ip.sh"
  content  = "${data.template_file.manage_private_ip_scripts.rendered}"
}

Но этот подход слишком далек от цели, и я хочу использовать частные IP-адреса в терраформе, а не вне терраформы.

У кого-нибудь есть идеи получше?

РЕДАКТИРОВАТЬ 2018/11/2

Я сделал через внешний источник данных.

data "external" "vmss_test_private_ip" {
  program = ["bash", "${local_file.test_private_ip_scripts.filename}"]
}

output hoge {
  value = "${data.external.vmss_test_private_ip.result}"
}

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Этот тип ресурса может быть импортирован в TF Scale Set . Так что это один из вариантов, только хлопоты, потому что есть много атрибутов, а при импорте возникают другие проблемы. Я обнаружил одну или две вещи, которые не отображаются в качестве ресурсов данных в поставщике AzureRM. Может быть стоит добавить запрос в репозиторий GitHub?

С уважением,

0 голосов
/ 31 октября 2018

Я уверен, что вы не можете не попробовать больше сценариев оболочки. Это то, как я это делаю. Попробуйте использовать VPN, чтобы получить лучшее соединение и не беспокоить вредоносные приложения d ** m.

...