Вопросы о "Плане" виртуальной машины в Azure (Terraform)
Я новичок в Azure и Terraform, но я унаследовал набор конфигов и модулей Terraform от того, кто покинул мою организацию. Мне было поручено изменить виртуальные машины проекта на версии с усиленной поддержкой CIS, что потребовало от меня добавить блок "план" в один из наших модулей подготовки виртуальных машин:
resource "azurerm_virtual_machine" "vm-windows" {
count = "${(((var.vm_os_id != "" && var.is_windows_image == "true") || contains(list("${var.vm_os_simple}","${var.vm_os_offer}"), "WindowsServer")) && var.data_disk == "false") ? var.nb_instances : 0}"
name = "${var.vm_hostname}${count.index}"
location = "${var.location}"
resource_group_name = "${var.resource_group_name}"
availability_set_id = "${azurerm_availability_set.vm.id}"
vm_size = "${var.vm_size}"
network_interface_ids = ["${element(azurerm_network_interface.vm.*.id, count.index)}"]
delete_os_disk_on_termination = "${var.delete_os_disk_on_termination}"
storage_image_reference {
id = "${var.vm_os_id}"
publisher = "${var.vm_os_id == "" ? coalesce(var.vm_os_publisher, module.os.calculated_value_os_publisher) : ""}"
offer = "${var.vm_os_id == "" ? coalesce(var.vm_os_offer, module.os.calculated_value_os_offer) : ""}"
sku = "${var.vm_os_id == "" ? coalesce(var.vm_os_sku, module.os.calculated_value_os_sku) : ""}"
version = "${var.vm_os_id == "" ? var.vm_os_version : ""}"
}
# this is what I added
plan {
name = "${var.vm_os_id == "" ? coalesce(var.vm_os_sku, module.os.calculated_value_os_sku) : ""}"
publisher = "${var.vm_os_id == "" ? coalesce(var.vm_os_publisher, module.os.calculated_value_os_publisher) : ""}"
product = "${var.vm_os_id == "" ? coalesce(var.vm_os_offer, module.os.calculated_value_os_offer) : ""}"
}
...
}
Поскольку модуль должен быть универсальным (т. Е. Использоваться в проектах, в которых есть виртуальные машины, не требующие планирования и планирования), мне нужно больше узнать об этом блоке "плана".
- Что это такое и где я могу узнать больше об этом? (Похоже, Google трудно справиться с задачей; например, "план виртуальной машины Azure" дает информацию о ценах.)
- Целесообразно ли оставить блок на месте для виртуальных машин, которые не обязательно в этом нуждаются?
Единственная документация, которую я видел до сих пор, это скудная информация Терраформ о блоке. Он не дает много информации (даже имена аргументов), и я не знаю, как перекрестно ссылаться на конструкции Terraform с Azure.
1 ответ
Решение
- Этот блок необходим, когда вы создаете пользовательский образ торговой площадки (например, межсетевые экраны Barracuda, серверы TrendMicro и т. Д.). в основном все, что не предоставляется Microsoft (по большей части). ( https://alexandrebrisebois.wordpress.com/2016/06/30/deploying-azure-marketplace-vms-via-arm-templates/ или это: https://azure.microsoft.com/en-us/marketplace/faq/)
- нет, это неуместно, вам нужно какое-то условие для включения этого блока. или просто иметь 2 шаблона, один с блоком и один без него.