85 lines
2.7 KiB
Terraform
85 lines
2.7 KiB
Terraform
resource "vcd_vapp_vm" "vm" {
|
|
for_each = local.servers
|
|
|
|
provider = vcd.al[each.value.vcd_key]
|
|
|
|
vapp_name = vcd_vapp.vapp[each.value.vcd_key].name
|
|
name = each.key
|
|
computer_name = each.key
|
|
catalog_name = each.value.config["catalog_name"]
|
|
template_name = each.value.config["template_name"]
|
|
memory = each.value.config["memory"]
|
|
cpus = each.value.config["cpu"]
|
|
|
|
network {
|
|
type = "org"
|
|
name = each.value.network_routed
|
|
ip_allocation_mode = lookup(each.value.config["network"], "mode", "auto") == "manual" ? "MANUAL" : "POOL"
|
|
is_primary = true
|
|
|
|
# Устанавливаем IP, только если режим "manual"
|
|
ip = lookup(each.value.config["network"], "mode", "auto") == "manual" ? lookup(each.value.config["network"], "ip", null) : null
|
|
}
|
|
|
|
override_template_disk {
|
|
bus_type = "paravirtual"
|
|
size_in_mb = each.value.config["osDisk"]
|
|
bus_number = 0
|
|
unit_number = 0
|
|
}
|
|
|
|
customization {
|
|
enabled = true
|
|
#force = var.forceRecustomization || !contains(var.servers, var.servers[count.index])
|
|
#force = var.forceRecustomization
|
|
force = false
|
|
allow_local_admin_password = true
|
|
auto_generate_password = false
|
|
admin_password = local.admin_password
|
|
}
|
|
|
|
set_extra_config {
|
|
key = "disk.EnableUUID"
|
|
value = "TRUE"
|
|
}
|
|
|
|
guest_properties = {
|
|
"user-data" = base64encode(templatefile("${path.module}/templates/cloudinit.yaml", {
|
|
hostname = each.key
|
|
username = each.value.config["init_username"]
|
|
ssh_authorized_keys = each.value.config["ssh_authorized_keys"]
|
|
}))
|
|
}
|
|
|
|
# Игноирование изменений дисков (PVC - Named Disks)
|
|
lifecycle {
|
|
ignore_changes = [
|
|
disk, # Игнорирует изменения всех дисков
|
|
]
|
|
}
|
|
|
|
depends_on = [
|
|
vcd_vapp_org_network.routed_network
|
|
]
|
|
}
|
|
|
|
resource "vcd_vm_internal_disk" "vmdisk" {
|
|
for_each = local.disks
|
|
|
|
provider = vcd.al[each.value.vcd_key]
|
|
|
|
vapp_name = vcd_vapp.vapp[each.value.vcd_key].name
|
|
vm_name = each.value.vm_name
|
|
|
|
bus_type = "paravirtual"
|
|
bus_number = 0
|
|
unit_number = each.value.unit_num
|
|
size_in_mb = each.value.disk_size
|
|
|
|
allow_vm_reboot = true
|
|
|
|
depends_on = [
|
|
vcd_vapp_vm.vm
|
|
]
|
|
}
|