Перейти к основному содержимому

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. 1

    Получите image и tariff identifiers

    Запросите каталоги образов и тарифов до сборки payload, чтобы запрос использовал live identifiers, а не значения из примеров.

  2. 2

    Создайте проект и сохраните его identifier

    Один и тот же projectId будет использоваться в вызовах для VM, SSH keys, networks и backup.

  3. 3

    Создайте или выберите параметры SSH-доступа

    Либо создайте project-level SSH keys заранее, либо передайте raw public keys прямо в create VM request.

  4. 4

    Определите стратегию public IP и plugins

    Решите, должна ли VM создать, переиспользовать или не использовать public IP, и нужно ли включать provisioning-time plugins в том же request.

  5. 5

    Отправьте create VM request

    Ожидайте command-oriented response. После этого нужно читать VM-resource, чтобы увидеть operation state, boot state и сетевые подключения.

  6. 6

    Сразу сохраните вернувшийся пароль

    Если в ответе на создание есть пароль, сохраните его немедленно. Это одноразовое раскрытие, а не значение, которое можно безопасно получить позже.

  7. 7

    Читайте VM, пока она не станет готовой

    Читайте VM-resource и проверяйте identifiers, размеры ресурсов, interfaces, operationStatus и bootStatus до того, как переходить к доступу или follow-up automation.

Ожидаемый результат

Успешный flow оставляет вам созданный VM-resource, его identifier, подтверждённое пригодное состояние и понятную фиксацию того, как в запросе были описаны доступ, поведение public IP и provisioning-time options.

Работа с паролем

Ответ на create VM может содержать поле пароля, которое показывается только один раз. Если вашему workflow оно нужно, сохраните его до того, как ответ покинет границу клиента.

Связанные endpoint