94 lines
2.6 KiB
Markdown
94 lines
2.6 KiB
Markdown
# Пример: Виртуальная машина (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@<externalIp из outputs>
|
||
```
|
||
|
||
Логин — `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` | **Не изменяется после создания** |
|