doc: добавление документации по созданию вм через tf

This commit is contained in:
2026-02-03 15:07:51 +03:00
parent d175ee9238
commit fa78ccf6ae
11 changed files with 420 additions and 4 deletions
+120
View File
@@ -0,0 +1,120 @@
# Развёртывание ВМ в 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..."]
}
```