| .. | ||
| templates | ||
| .gitignore | ||
| local.tf | ||
| provider.tf | ||
| README.md | ||
| terraform.tfvars | ||
| tools.tf | ||
| vapp.tf | ||
| var.tf | ||
| vm.tf | ||
Развёртывание ВМ в VMware Cloud Director через tf
Используется OpenTofu (tofu). Конфигурация создаёт виртуальные машины в vCD: можно задать несколько ВМ, размеры CPU/RAM/дисков и сеть.
Быстрый старт
-
Установите OpenTofu (opentofu.org).
-
Задайте переменные окружения (доступ к vCD):
export TF_VAR_vmware_username="ваш_пользователь_vCD" export TF_VAR_vmware_password="ваш_пароль_vCD"Пароль администратора ВМ можно не задавать — тогда он сгенерируется автоматически (см.
tools.tf). Чтобы задать свой:export TF_VAR_admin_password="ваш_пароль". -
Отредактируйте
terraform.tfvars— укажите нужный vDC, имя vApp, параметры ВМ (см. раздел «Конфигурация» ниже). -
Разверните инфраструктуру:
tofu init tofu plan tofu apply
Конфигурация
Переменные окружения
Обязательные для доступа к vCD:
TF_VAR_vmware_username— пользователь VMware Cloud DirectorTF_VAR_vmware_password— пароль VMware Cloud Director
Опционально: TF_VAR_admin_password — пароль администратора на ВМ (если не задан, генерируется автоматически).
vcds = {
"vdcconfiguration1" = {
url = "https://ngcloud.ru/api"
org = "dev"
vdc = "dev"
network_routed = "dev-mgmt-network"
servers = {
"vappname01" = {
"vmname01" = {
cpu = "4"
memory = "4096"
osDisk = "16384"
dataDisk = {
"1" = "30720"
"2" = "15360"
}
network = {
mode = "auto"
ip = ""
}
catalog_name = "dev"
template_name = "RockyLinux_9-16G-customize"
}
}
}
}
}
Переменная задаётся в terraform.tfvars; схема — в var.tf, использование — provider.tf, vapp.tf, vm.tf, local.tf.
*** Ключ vcds — произвольное имя контура (можно несколько vDC в одной конфигурации) ***
vcds = {
"test" = {
...
}
}
*** Настройка vDC ***
url = URL API Cloud Director (https://<хост>/api)
org = имя организации
vdc = имя vDC
network_routed = имя routed-сети, куда подключаются ВМ
*** Настройка vApp (ключи внутри servers — имена vApp) ***
servers = {
"testservers" = { ... } # первый vApp
"testvapp2" = { ... } # второй vApp
}
*** Настройка сервера (параметры ВМ) ***
"testservers" = {
"test01" = {
cpu = кол-во ядер CPU
memory = объём RAM (МБ)
osDisk = размер системного диска (МБ)
dataDisk = { # ключ — unit, значение — размер в МБ
"1" = "30720"
"2" = "15360"
}
network = { # mode "auto" (IP из пула) или "manual" (указать ip)
mode = "auto"
ip = ""
}
network = mode "auto" (IP из пула) или "manual" (указать ip)
mode = "auto"
ip = ""
catalog_name = каталог с шаблоном
template_name = имя шаблона образа
# опционально (cloud-init):
init_username = "deploy"
ssh_authorized_keys = ["ssh-ed25519 AAAA..."]
}