name: vc_vm_v3
service_id: 28
service_display_name: Виртуальная машина
service_short_name: vc_vm_v3
service_man: '# Документация по разворачиванию ВМ в Личном кабинете
Данный сервис позволяет разворачивать виртуальные машины (ВМ) непосредственно из Личного кабинета (ЛК).
## Доступные операции
- **create** — Создание виртуальной машины
- **delete** — Удаление виртуальной машины
- **resume** — Запуск виртуальной машины
- **suspend** — Остановка виртуальной машины
---
## Параметры для развёртывания ВМ
### Обязательные параметры:
**vappUid**
UUID vApp, в которой будет создаваться виртуальная машина.
*Пример: WZ00400*
**vmName**
Уникальное имя виртуальной машины.
*Пример: test-vm*
**vmCpu**
Количество ядер процессора. Должно быть больше 0.
*Пример: 1*
**vmRam**
Объем оперативной памяти в гигабайтах. Должно быть больше 0.
*Пример: 1*
**accessPortList**
Белый список портов для доступа к виртуальной машине извне в формате JSON.
*Пример: ["22","10050]*
**imageVm**
Образ операционной системы для развёртывания.
*Доступные значения: RockyLinux_9-16G-cloudinit, Ubuntu_22-20G, Debian_13-20G*
**userLogin**
Логин пользователя для SSH-доступа.
*По умолчанию: myuser*
**userPublicKey**
Публичный SSH-ключ пользователя в формате OpenSSH.
*Пример: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...*
**needAddZabbixTemplate**
Значение истина\ложь, определяющее будет ли добавлен хост в zabbix.
*Пример: true*
### Опциональные параметры:
**accessIpList**
Белый список IP-адресов для доступа к виртуальной машине в формате JSON. Если оставить пустым, вм будет доступена со всех адресов.
*Пример: ["192.168.1.1", "10.0.0.5"]*
**vmDisk**
Размер дополнительного диска в гигабайтах. Должно быть больше 0.
*Пример: 50*
**ipSpaceName**
Внешний IP-адрес. Если не требуется — укажите значение "no-needed" (В нем не будет работать сбор метрик zabbix).
**cloudInit**
YAML-скрипт для кастомизации системы через cloud-init.
---
## Доступные образы операционных систем
### RockyLinux_9-16G-cloudinit
Базовый образ на основе Rocky Linux 9 (Rocky-9.6-x86_64-minimal) для серверных задач.
- Размер системного диска: 16 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM
### Ubuntu_22-20G
Образ на основе Ubuntu Server 22.04 LTS для облачного окружения.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM
### Debian_13-20G
Образ на основе Debian 13 (Trixie) для стабильной серверной работы.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM
---
## Пример использования Cloud-init
```yaml
users:
- name: myuser
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...
packages:
- nginx
runcmd:
- systemctl enable --now nginx
- systemctl restart nginx
```
---
## Результат выполнения
После успешного развёртывания в Личном кабинете появится новая виртуальная машина с заданными характеристиками. SSH-доступ осуществляется с использованием указанных логина и публичного ключа.
---
## Важные примечания
### Особенности работы:
- Для отключения внешнего IP укажите значение "no-needed" в параметре ipSpaceName
- Параметр cloudInit является опциональным
### Ограничения:
- Не рекомендуется использовать продолжительные инструкции в cloud-init (таймаут 5 минут)
- Не поддерживается запись файлов через cloud-init
- Не реализовано создание резервных копий ВМ
---
## Диагностика проблем с cloud-init
### Основной лог-файл:
```bash
/var/log/cloud-init.log
```
### Пакет не устанавливается:
- Проверьте доступность пакета в репозитории
- Убедитесь в правильности написания имени пакета
- Попробуйте установить вручную: `apt install <имя_пакета>` (Debian/Ubuntu) или `dnf install <имя_пакета>` (Rocky Linux)
### Команда не выполняется:
- Проверьте наличие требуемой утилиты в системе
- Убедитесь в правильности синтаксиса команды
- Попробуйте выполнить команду вручную для диагностики'
lifecycle:
suspend_on_destroy_default: true
adopt_existing_on_create_default: false
outputs:
params:
- code: state_params
type: map
- code: state_out
type: map
- code: state_params_flat
type: map
- code: state_out_flat
type: map
- code: vault_secrets
type: map
sensitive: true
- code: vault_url
type: string
- code: vault_user_path
type: string
- code: vault_fields
type: list
operations:
- name: create
id: 132
kind: instance
action: create
man: '# Документация по использованию услуги развёртывания ВМ в Личном кабинете
Данный сервис позволяет разворачивать виртуальные машины (ВМ) непосредственно из Личного кабинета (ЛК).
## Доступные операции
- **create** — Создание виртуальной машины
- **delete** — Удаление виртуальной машины
- **resume** — Запуск виртуальной машины
- **suspend** — Остановка виртуальной машины
---
## Параметры для развёртывания ВМ
### Обязательные параметры:
**vappUid**
UUID vApp, в которой будет создаваться виртуальная машина.
*Пример: WZ00400*
**vmName**
Уникальное имя виртуальной машины.
*Пример: test-vm*
**vmCpu**
Количество ядер процессора. Должно быть больше 0.
*Пример: 1*
**vmRam**
Объем оперативной памяти в гигабайтах. Должно быть больше 0.
*Пример: 1*
**accessPortList**
Белый список портов для доступа к виртуальной машине извне в формате JSON.
*Пример: ["22","10050]*
**imageVm**
Образ операционной системы для развёртывания.
*Доступные значения: RockyLinux_9-16G-cloudinit, Ubuntu_22-20G, Debian_13-20G*
**userLogin**
Логин пользователя для SSH-доступа.
*По умолчанию: myuser*
**userPublicKey**
Публичный SSH-ключ пользователя в формате OpenSSH.
*Пример: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...*
**needAddZabbixTemplate**
Значение истина\лож определяющее будет ли добавлен хост в zabbix.
*Пример: true*
### Опциональные параметры:
**accessIpList**
Белый список IP-адресов для доступа к виртуальной машине в формате JSON. Если оставить пустым, вм будет доступена со всех адресов.
*Пример: ["192.168.1.1", "10.0.0.5"]*
**vmDisk**
Размер дополнительного диска в гигабайтах. Должно быть больше 0.
*Пример: 50*
**ipSpaceName**
Внешний IP-адрес. Если не требуется — укажите значение "no-needed".
**cloudInit**
YAML-скрипт для кастомизации системы через cloud-init.
---
## Доступные образы операционных систем
### RockyLinux_9-16G-cloudinit
Базовый образ на основе Rocky Linux 9 (Rocky-9.6-x86_64-minimal) для серверных задач.
- Размер системного диска: 16 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM
### Ubuntu_22-20G
Образ на основе Ubuntu Server 22.04 LTS для облачного окружения.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM
### Debian_13-20G
Образ на основе Debian 13 (Trixie) для стабильной серверной работы.
- Размер системного диска: 20 ГБ
- Поддержка cloud-init
- Минимальные требования: 1 vCPU, 1 ГБ RAM
---
## Пример использования Cloud-init
```yaml
users:
- name: myuser
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...
packages:
- nginx
runcmd:
- systemctl enable --now nginx
- systemctl restart nginx
```
---
## Результат выполнения
После успешного развёртывания в Личном кабинете появится новая виртуальная машина с заданными характеристиками. SSH-доступ осуществляется с использованием указанных логина и публичного ключа.
---
## Важные примечания
### Особенности работы:
- Для отключения внешнего IP укажите значение "no-needed" в параметре ipSpaceName
- Параметр cloudInit является опциональным
### Ограничения:
- Не рекомендуется использовать продолжительные инструкции в cloud-init (таймаут 5 минут)
- Не поддерживается запись файлов через cloud-init
- Не реализовано создание резервных копий ВМ
---
## Диагностика проблем с cloud-init
### Основной лог-файл:
```bash
/var/log/cloud-init.log
```
### Пакет не устанавливается:
- Проверьте доступность пакета в репозитории
- Убедитесь в правильности написания имени пакета
- Попробуйте установить вручную: `apt install <имя_пакета>` (Debian/Ubuntu) или `dnf install <имя_пакета>` (Rocky Linux)
### Команда не выполняется:
- Проверьте наличие требуемой утилиты в системе
- Убедитесь в правильности синтаксиса команды
- Попробуйте выполнить команду вручную для диагностики'
params:
- id: 407
code: vappUid
data_type: uuid
required: true
ref_svc_id: 26
sort: 10
- id: 408
code: vmName
data_type: string
required: true
default: web01
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
sort: 20
- id: 409
code: vmCpu
data_type: integer > 0
required: true
default: "1"
maxvalue: 64
minvalue: 1
descr: шт
sort: 30
is_modifiable: true
- id: 410
code: vmRam
data_type: integer > 0
required: true
default: "1"
maxvalue: 256
minvalue: 1
descr: Gb
sort: 40
is_modifiable: true
- id: 411
code: vmDisk
data_type: integer > 0
required: false
regex: ^(?:$|(?:0|[1-9]\d{0,2}|1\d{3}|20(?:[0-3]\d|4[0-8])))$
descr: Основной диск у vm зависит от образа (см. документацию)
Если необходимо дополнительное место для vm, введите колличество Gb в эту форму
sort: 50
is_modifiable: true
- id: 412
code: ipSpaceName
data_type: string
required: true
sort: 60
depends_on: vappUid
is_modifiable: true
- id: 413
code: accessIpList
data_type: json
required: false
regex: ^(?:$|\[\s*(?:"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?"(?:\s*,\s*"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?")*)\s*\])$
descr: Формат массива
Каким адресам будет предоставлен доступ до вм
Требует выделенного внешнего IP
Если ничего не передано, то выставлено ["0.0.0.0/0"]
sort: 70
is_modifiable: true
- id: 414
code: imageVm
data_type: string
required: true
sort: 90
depends_on: vappUid
- id: 415
code: cloudInit
data_type: yaml
required: false
descr: Можно передать создание дополнительных пользователей.
На текущий момент не реализовано выполнения в cloud-init, установки пакетов, выполнения команд и записи файлов.
sort: 200
- id: 416
code: userLogin
required: true
default: myuser
descr: Учётка SSH
sort: 180
- id: 417
code: userPublicKey
data_type: string
required: true
descr: Публичная часть SSH-Ключа для пользователя
sort: 190
- id: 448
code: accessPortList
data_type: string
required: true
default: '["22"]'
descr: 'По каким портам открыть доступ к ВМ.
Порты 22, 10050 проставляются автоматически
Пока доступно:
22 - SSH,
80 - HTTP,
443 - HTTPS,
10050 - ZABBIX'
sort: 80
is_modifiable: true
- name: delete
id: 133
kind: instance
action: delete
params: []
- name: modify
id: 159
kind: instance
action: modify
params:
- id: 493
code: vmCpu
data_type: integer > 0
required: false
maxvalue: 64
minvalue: 1
descr: шт
sort: 20
- id: 494
code: vmRam
data_type: integer > 0
required: false
maxvalue: 256
minvalue: 1
descr: Gb
sort: 30
- id: 495
code: vmDisk
data_type: integer > 0
required: false
regex: ^(?:$|(?:0|[1-9]\d{0,2}|1\d{3}|20(?:[0-3]\d|4[0-8])))$
descr: Основной диск у vm зависит от образа (см. документацию)
Если необходимо дополнительное место для vm, введите колличество Gb в эту форму
sort: 40
- id: 496
code: ipSpaceName
data_type: string
required: false
value_list:
- no-needed
- internet-antiddos-v1
- internet-no-antiddos-v1
- internet-ipv4-v1
descr: no-needed, без внешнего ip
internet-antiddos-v1, с функцией защиты от ddos атак
internet-no-antiddos-v1, с функцией защиты от ddos атак
internet-ipv4-v1 тестовое простанство dev
sort: 50
- id: 497
code: accessIpList
data_type: json
required: false
descr: Формат массива
Каким адресам будет предоставлен доступ до вм
Требует выделенного внешнего IP
Если ничего не передано, то выставлено ["0.0.0.0/0"]
sort: 60
- id: 498
code: accessPortList
data_type: json
required: false
descr: Формат массива
По каким портам открыть доступ к ВМ.
Пока доступно:
22 - SSH,
80 - HTTP,
443 - HTTPS,
10050 - ZABBIX
sort: 70
- name: reconcile
id: 286
kind: action
action: reconcile
params: []
- name: redeploy
id: 164
kind: action
action: redeploy
params:
- id: 509
code: vmName
data_type: string
required: true
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
sort: 10
- id: 510
code: vmCpu
data_type: integer > 0
required: true
maxvalue: 64
minvalue: 1
descr: шт
sort: 20
- id: 511
code: vmRam
data_type: integer > 0
required: true
maxvalue: 256
minvalue: 1
descr: Gb
sort: 30
- id: 512
code: vmDisk
data_type: integer > 0
required: false
regex: ^(?:$|(?:0|[1-9]\d{0,2}|1\d{3}|20(?:[0-3]\d|4[0-8])))$
descr: Основной диск у vm зависит от образа (см. документацию)
Если необходимо дополнительное место для vm, введите колличество Gb в эту форму
sort: 40
- id: 513
code: ipSpaceName
data_type: string
required: false
value_list:
- no-needed
- internet-antiddos-v1
- internet-no-antiddos-v1
- internet-ipv4-v1
descr: no-needed, без внешнего ip
internet-antiddos-v1, с функцией защиты от ddos атак
internet-no-antiddos-v1, с функцией защиты от ddos атак
internet-ipv4-v1 тестовое простанство dev
sort: 50
- id: 514
code: accessIpList
data_type: json
required: false
regex: ^(?:$|\[\s*(?:"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?"(?:\s*,\s*"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?")*)\s*\])$
descr: Формат массива
Каким адресам будет предоставлен доступ до вм
Требует выделенного внешнего IP
Если ничего не передано, то выставлено ["0.0.0.0/0"]
sort: 60
- id: 515
code: imageVm
data_type: string
required: true
value_list:
- RockyLinux_9-16G-cloudinit
- Ubuntu_22-20G
- Debian_13-20G
sort: 80
- id: 516
code: userLogin
data_type: string
required: true
descr: Учётка SSH
sort: 180
- id: 517
code: userPublicKey
data_type: string
required: true
descr: Публичная часть SSH-Ключа для пользователя
sort: 190
- id: 518
code: cloudInit
data_type: yaml
required: false
descr: Можно передать создание дополнительных пользователей.
На текущий момент не реализовано выполнения в cloud-init, установки пакетов, выполнения команд и записи файлов.
sort: 200
- id: 520
code: accessPortList
data_type: json
required: false
descr: По каким портам открыть доступ к ВМ.
Порты 22, 10050 проставляются автоматически
Пока доступно:
22 - SSH,
80 - HTTP,
443 - HTTPS,
10050 - ZABBIX
sort: 70
- name: resume
id: 135
kind: instance
action: resume
params: []
- name: suspend
id: 134
kind: instance
action: suspend
params: []