Я новичок в 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.