Workflow
Создание и доступ к VM
Этот workflow описывает типичный путь provisioning в ZennoHosting: создать проект, определить live provisioning inputs, выбрать способ доступа к VM, отправить create VM request и проверить итоговое состояние ресурса.
Создайте проект
Проекты — это parent scope для VM и почти всех связанных ресурсов, с которыми вы будете работать дальше.
curl --request POST \
--url 'https://api.zennohosting.com/projects' \
--header 'Authorization: Bearer <token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"name": "automation-project"
}'
Определите provisioning inputs
До create VM request получите актуальные imageId и tariffId. Если при создании нужен
новый public IP, отдельно определите и тариф для public IP.
Подготовьте доступ и optional plugins
Используйте
sshPublicKeys, если у клиента уже есть raw OpenSSH public keys.Используйте
sshKeyIds, если хотите переиспользовать project-level SSH keys.Определите, нужно ли VM получать public IP при создании через
publicIpMode.Решите, нужно ли подключать optional
plugins, например backup-related automation plugins, на этапе provisioning.
Создайте VM
Пример ниже использует existing project SSH keys, запрашивает новый public IP, задаёт отдельный тариф public IP и передаёт optional plugin. Адаптируйте payload под свои provisioning inputs.
curl --request POST \
--url 'https://api.zennohosting.com/projects/{projectId}/vms' \
--header 'Authorization: Bearer <token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"tariffId": "00000000-0000-0000-0000-000000000000",
"imageId": "00000000-0000-0000-0000-000000000000",
"vmName": "worker-01",
"plugins": [
"00000000-0000-0000-0000-000000000000"
],
"sshKeyIds": [
"00000000-0000-0000-0000-000000000000"
],
"publicIpMode": "New",
"publicIpTariffId": "00000000-0000-0000-0000-000000000000",
"privateNetworkIds": [
"00000000-0000-0000-0000-000000000000"
]
}'
- 1
Получите image и tariff identifiers
Запросите каталоги образов и тарифов до сборки payload, чтобы запрос использовал live identifiers, а не значения из примеров.
- 2
Создайте проект и сохраните его identifier
Один и тот же
projectIdбудет использоваться в вызовах для VM, SSH keys, networks и backup. - 3
Создайте или выберите параметры SSH-доступа
Либо создайте project-level SSH keys заранее, либо передайте raw public keys прямо в create VM request.
- 4
Определите стратегию public IP и plugins
Решите, должна ли VM создать, переиспользовать или не использовать public IP, и нужно ли включать provisioning-time plugins в том же request.
- 5
Отправьте create VM request
Ожидайте command-oriented response. После этого нужно читать VM-resource, чтобы увидеть operation state, boot state и сетевые подключения.
- 6
Сразу сохраните вернувшийся пароль
Если в ответе на создание есть пароль, сохраните его немедленно. Это одноразовое раскрытие, а не значение, которое можно безопасно получить позже.
- 7
Читайте VM, пока она не станет готовой
Читайте VM-resource и проверяйте identifiers, размеры ресурсов, interfaces,
operationStatusиbootStatusдо того, как переходить к доступу или follow-up automation.
Ожидаемый результат
Успешный flow оставляет вам созданный VM-resource, его identifier, подтверждённое пригодное состояние и понятную фиксацию того, как в запросе были описаны доступ, поведение public IP и provisioning-time options.
Работа с паролем
Ответ на create VM может содержать поле пароля, которое показывается только один раз. Если вашему workflow оно нужно, сохраните его до того, как ответ покинет границу клиента.
Связанные endpoint
/projectsСоздать родительский проект.
/projects/{projectId}/ssh-keysСоздать project-level SSH keys для переиспользования.
/imagesПолучить identifier образа для create VM request.
/tariffsПолучить identifier VM tariff для create VM request.
/projects/{projectId}/vmsСоздать виртуальную машину.
/projects/{projectId}/vms/{vmId}Получить итоговый VM-resource и проверить состояние.
/projects/{projectId}/vms/{vmId}/ssh-keysПроверить SSH keys, связанные с VM-resource.