# Развёртывание ВМ в VMware Cloud Director через tf Используется **OpenTofu** (`tofu`). Конфигурация создаёт виртуальные машины в vCD: можно задать несколько ВМ, размеры CPU/RAM/дисков и сеть. --- ## Быстрый старт 1. **Установите OpenTofu** ([opentofu.org](https://opentofu.org)). 2. **Задайте переменные окружения** (доступ к vCD): ```bash export TF_VAR_vmware_username="ваш_пользователь_vCD" export TF_VAR_vmware_password="ваш_пароль_vCD" ``` Пароль администратора ВМ можно не задавать — тогда он сгенерируется автоматически (см. `tools.tf`). Чтобы задать свой: `export TF_VAR_admin_password="ваш_пароль"`. 3. **Отредактируйте `terraform.tfvars`** — укажите нужный vDC, имя vApp, параметры ВМ (см. раздел «Конфигурация» ниже). 4. **Разверните инфраструктуру:** ```bash tofu init tofu plan tofu apply ``` --- ## Конфигурация ### Переменные окружения Обязательные для доступа к vCD: - `TF_VAR_vmware_username` — пользователь VMware Cloud Director - `TF_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](var.tf), использование — [provider.tf](provider.tf), [vapp.tf](vapp.tf), [vm.tf](vm.tf), [local.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..."] } ```