# Пример: Виртуальная машина (vApp + VM) в Nubes vDC Создаёт: - **vApp** — виртуальный каталог (контейнер для ВМ в VMware vDC) - **ВМ** — Ubuntu 22.04, 2 CPU / 2 GB RAM / 20 GB disk --- ## Что нужно сделать перед запуском ### 1. Сгенерировать SSH-ключ Публичный ключ прописывается в ВМ при создании — это единственный способ зайти по SSH. Приватный ключ нужен хранить у себя. ```bash ssh-keygen -t ed25519 -f ~/.ssh/sless-demo-vm -N "" -C "sless-demo-vm" ``` Публичный ключ (`~/.ssh/sless-demo-vm.pub`) — строка вида: ``` ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... sless-demo-vm ``` ### 2. Заполнить terraform.tfvars Открыть файл `terraform.tfvars` и заменить значения: ```hcl # Ваш API-токен из панели Nubes api_token = "ВСТАВИТЬ_ТОКЕН" # Публичный ключ из шага 1 vm_public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA..." ``` > **Токен** — берётся в панели Nubes: профиль → API-токены. > **Ключ** — содержимое файла `~/.ssh/sless-demo-vm.pub` (публичный, не приватный!). --- ## Запуск ```bash cd examples/VM terraform init terraform apply ``` После `apply` в выводе будет: ``` Outputs: vm_id = "..." vm_state = { "externalIp" = "1.2.3.4" ... } vapp_id = "..." ``` --- ## Подключение по SSH ```bash ssh -i ~/.ssh/sless-demo-vm ubuntu@ ``` Логин — `ubuntu` (задан в `vm.tf`). --- ## Удаление ```bash terraform destroy ``` Порядок автоматический: сначала suspend → потом delete. Без suspend удаление упадёт с ошибкой — это поведение Nubes, параметр `suspend_on_destroy = true` в ресурсах решает это. --- ## Что можно менять | Параметр | Файл | Примечание | |----------|------|-----------| | `vm_cpu`, `vm_ram`, `vm_disk` | `vm.tf` | Можно менять и переприменять | | `resource_name`, `vapp_name` | `vapp.tf` | **Не изменяется после создания** | | `image_vm`, `user_login`, `user_public_key` | `vm.tf` | **Не изменяется после создания** | | `vdc_uid`, `nsxt_uid` | `vapp.tf` | **Не изменяется после создания** |