121 lines
4.4 KiB
Markdown
121 lines
4.4 KiB
Markdown
# Развёртывание ВМ в 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..."]
|
|
}
|
|
```
|