Skip to content
На этой странице:

Создание виртуальной машины при помощи OpenAPI

Общая информация

Чтобы работать с сервисами облака CloudMTS при помощи API, у вас должны быть созданы:

  1. Учетная запись в облаке CloudMTS. Как зарегистрироваться...
  2. Платежный аккаунт. Подробнее...

Для подключения того или иного сервиса Облака на балансе вашего платежного аккаунта должны присутствовать средства в соответствующем объеме. Также вы можете использовать гранты.


Для создания виртуальной машины (сервис Compute Cloud) потребуются:

  1. Авторизационный токен$TOKEN.

    Все API запросы выполняются от имени пользователя. Токен генерируется для пользователя при выполнении запроса на авторизацию. Также можно использовать токен, созданный для сервисного аккаунта. Подробнее...

    Пример авторизационного токена
    json
    eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMmVmY2U2My01Y2YzLTQxOWEtOTllYi1kYzNiNWVkNGM3NzYiLCJleHAiOjE2ODUwMjYxNzcsImlhdCI6MTY4NTAxMTc4OCwidiI6MiwicCI6Im1uKlRyQEx6cDIvU20oSGQpS3p4OXU5WFx1MDAzZUBXNGdCRzJxPXdcdTAwM2V9bmNPeUE2Yz9BUkJBcF4hbmI3XHUwMDNjeGdbJD1xNkFGU0kyLXVCa15IckItMHpqZ2lbOi5dUUIjOU1NUkJve3ZcdTAwMjZieGJ0fUwyNCFVNTpYckRGRlI3QjlzR0wlSF50XnY4UnJVSC86OTNwXWNiLSF9QHUkXVNIVkIkU2JKZ0chP3g6WWhUUDJGIy1zSmJcdTAwM2VrVS5Wb0A5bEN3RElRVVd4L0Eld1NpNlVlRSppY2JPSXVPKXNVMkdyNFVnVCNCXHUwMDNleTJ4d1hNaFQhVXF0RkwzbXNIa312Sl1pdH0_MWVIZmNXc2FpRC9BfUVxWV1uQTYxTjdMISVbKSRGUSMpTFQ9azd0R3pjKzJCPVNlTiRQT0Z6NXpyTkdxYkF6cz8vVTgyZ2NMLVx1MDAzZWNcdTAwM2NyLiNUdEBVMDlkc2l5bnNKOmxZbWFBcTUxMnslbmZZTnMqMFd3R3trKTAvdio_QV5lW14rXHUwMDI2WTZxezp6ckdJaFx1MDAzY083cWFATFx1MDAzY01YW0UrVElFVVBmeSgoanVDS2NQOGNXQUl0XlJpOUcqYk9yIn0.foWauILeaASkOnzCHgaWinGPlj5SNT44xqpQPLFNAY3f-1oUmtWPcmCGeRjMKLYQ2A9ZAOk9ZLaT49oOtjXjVAdY46Ni4MHJOkHtzRksgl9rZHdNwSQbQwTnjbR0sgf2BUaGkdoR3yY3udXYOCGfpbL5nAZKEZoeVyc0fHWtGvy2V9ocjWQiP12hiJhfd2vl1s8gpX4PofP9KaaurpbmTDQ8rfHY1i4u33bU0HtabnkcgmeplU0J_2gFbsBsLpcXszgPeiUAg8ep5JB3A1_PNmz86dcM3m7e223y3KUP3vxlmejDZQFJImvlcL0727JC-_RSRWeUHiyArbjrwyNgowZtbmnsH65ssPTZwoMNhU5X5yVIj_um2EesEd2FIt1R4T56vXeagF2Bln8GRfZLaut06kN2a6i4lWr-JV7xZbeT9n9t58Yyyk6Z7IjwwsDVGOJTPY_jhBP8U4mpFBAo__bjtfi4u6cNgoo6bSrNR0ud9wLTta8aUxqz47bCmjtgmovhTLXWw0pOJmMb7UiBcL3IKNoVSkoiqTJSqArMO72fMquizKXyT4HVghPIt5mgDQOdsxKiZ-2L4dvBW_72U8mkd4VwOAcRwYcM6xfQcko6aPYiaGrAgpvWZ8iRUdFfqaW63V6SSweRcbnU9UwDfUSVZ7i3lZsPqhalLmUEj9c
  2. Идентификатор проекта$PROJECTID.

    Любой сервис в облаке CloudMTS создается в рамках проекта. Вы можете:

    • Создать новый проект при помощи API-запроса.
    • Использовать уже созданный проект (например, тот, который был создан автоматически при регистрации вашей учетной записи в облаке). Его идентификатор можно узнать на Дашборде в консоли управления (правая верхняя часть экрана).

    Идентификатор проекта имеет формат UUID, пример: 09b992c3-1223-41e7-bd81-cfeae5f7fb5c.

  3. Идентификатор сетиnetwork_id, идентификатор подсетиsubnetwork_id и IP-адрес — (ip_address).

    Для создания ВМ нужна выделенная виртуальная сеть и подсеть, а также IP-адрес. Если у вас уже есть созданные сеть/подсеть/IP, используйте их. Также вы можете создать новые при помощи API-запросов.

    Идентификаторы сети/подсети/IP-адреса имеют формат UUID.


Последовательность шагов для создания виртуальной машины на базе сервиса Compute Cloud в облаке CloudMTS через API — следующая:

  1. Авторизуйтесь (опционально; можете использовать токен сервисного аккаунта, если он создан).
  2. Создайте проект (опционально; можете использовать существующий).
  3. Создайте виртуальную сеть (опционально; можете использовать существующую, если она уже создана).
  4. Создайте виртуальную подсеть (опционально; можете использовать существующую, если она уже создана).
  5. Создайте IP адрес (опционально; можете использовать существующую, если она уже создана).
  6. Сгенерируйте SSH-ключ для доступа к виртуальной машине.
  7. Создайте виртуальную машину.

Важно

Каждый API запрос на создание объекта (проект, сеть/подсеть, IP-адрес, виртуальная машина и так далее) должен содержать ключ идемпотентности:

  • ключ в формате UUID передается в HTTP заголовке Idempotency-Key;
  • сгенерировать ключ можно при помощи сторонней библиотеки или онлайн-сервиса, например https://www.uuidgenerator.net/version4;
  • в примерах API запросов ниже значение ключа идемпотентности обозначено как $IDEMPOTENCYKEY;
  • пример ключа идемпотентности — 79b3b7fd-0c15-478a-9431-f212f0464a9e.

Авторизация

  • Если у вас есть токен сервисного аккаунта — пропустите этот шаг.

  • Если у вас нет токена сервисного аккаунта:

    • Авторизуйтесь при помощи запроса POST /iam/v2/tokens — в ответе будет возвращен токен. Используйте его в дальнейших запросах.

Создание проекта

  • Если вы хотите использовать уже созданный проект — пропустите этот шаг.
  • Для создания нового проекта выполните запрос POST /apis/projects/public/v4/projects.

Пример запроса:

bash
curl --location --request POST 'https://gateway.cloud.mts.ru/apis/projects/public/v4/projects' \
--header "Idempotency-Key: $IDEMPOTENCYKEY" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $TOKEN" \
--data '{
  "name": "Test OpenAPI",
  "description": "Проект для тестирования OpenAPI"
}'

Создание сети

  • Если вы хотите использовать уже созданную виртуальную сеть — пропустите этот шаг.
  • Для создания новой сети выполните запрос POST /ocs/v1/services.

Пример запроса:

bash
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \
--header "Idempotency-Key: $IDEMPOTENCYKEY" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $TOKEN" \
--data '{
  "platform": {
    "productCode": "network",
    "regionCode": "msk"
  },
  "kind": "network",
  "metadata": {
    "description": "test OpenAPI network",
    "title": "openapi-network"
  },
  "projectId": "'$PROJECTID'",
  "spec": {
    "mts.extensions.network": {
        "bandwidth_mbps": 100,
        "default_gfw_rule_action": "allow"
    }
  },
  "zoneCode": "msk-avntg"
}
'

Создание подсети

  • Если вы хотите использовать уже созданную подсеть — пропустите этот шаг.
  • Для создания новой подсети выполните запрос POST /ocs/v1/services.

Пример запроса:

bash
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \
--header "Idempotency-Key: $IDEMPOTENCYKEY" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $TOKEN" \
--data '{
    "platform": {
        "productCode": "network",
        "regionCode": "msk"
    },
    "kind": "subnet",
    "metadata": {
        "description": "test OpenAPI subnetwork",
        "title": "openapi-subnetwork"
    },
    "parentBinding": {
        "targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3"
    },
    "projectId": "'$PROJECTID'",
    "spec": {
        "mts.extensions.subnet": {
            "cidr": "10.100.15.0/24"
        }
    },
    "zoneCode": "msk-avntg"
}'

В примере выше:

  • в параметре "targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3" указывается ID сети, в которой создается подсеть.

Создание IP-адреса

  • Если вы хотите использовать уже созданный IP-адрес — пропустите этот шаг.
  • Для создания нового IP-адреса выполните запрос POST /ocs/v1/services.

Пример запроса:

bash
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \
--header "Idempotency-Key: $IDEMPOTENCYKEY" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $TOKEN" \
--data '{
    "platform": {
        "productCode": "network",
        "regionCode": "msk"
    },
    "kind": "ip",
    "metadata": {
        "description": "test OpenAPI ip",
        "title": "openapi-ip-address"
    },
    "parentBinding": {
        "targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3"
    },
    "projectId": "'$PROJECTID'",
    "spec": {},
    "zoneCode": "msk-avntg"
}'

В примере выше:

  • в параметре "targetId": "8d114c29-d579-41b3-a4d9-7fd0ac20a0d3" указывается ID сети, в которой создается IP-адрес.

Создание SSH-ключа

Создайте ключ для доступа к виртуальной машине по SSH любым удобным способом:

Создание виртуальной машины

Выполняется запросом POST /ocs/v1/services, в котором необходимо передать:

  • prodjectId, network_id, subnetwork_id, ip_address — их можно взять из ответов предыдущих API-запросов.

  • параметры создаваемой виртуальной машины (описание приведено ниже).

    В параметрах создаваемой виртуальной машины также указываются SSH-ключ, и (опционально) логин и пароль — если нужен доступ через веб-терминал Compute Cloud.

Параметры виртуальной машины

Platform

Platform IDCPU Type
compute.v2Intel® Xeon® Gold 6238R (2.2 GHz)
compute.v3Intel® Xeon® Gold 6348 (2.6 GHz)
compute.gpu.v1Intel® Xeon® Gold 6348 (2.6 GHz) with GPU

Instance Type для compute.v2

Instance TypevCpuMemory, Mb
c1.small11024
c1.medium12048
c1.large14096
c2.small22048
c2.medium24096
c2.large28192
c4.small44096
c4.medium48192
c4.large416384
c6.small66144
c6.medium612288
c6.large618432
c8.small88192
c8.medium816384
c8.large824576
c10.small1010240
c10.medium1020480
c10.large1030720
c12.small1212288
c12.medium1224576
c12.large1249152
c16.small1616384
c16.medium1632768
c16.large1665536
c20.small2020480
c20.medium2040960
c20.large2081920
c24.small2424576
c24.medium2449152
c24.large2498304
с1.xlarge18192
с2.xlarge216384
с4.xlarge432768
с6.xlarge649152
с8.xlarge865536
с10.xlarge1081920
с12.xlarge1298304
с16.xlarge16131072
с20.xlarge20163840
с24.xlarge24196608

Instance Type для compute.v3

Instance TypevCpuMemory, Mb
c1.small11024
c1.medium12048
c1.large14096
c2.small22048
c2.medium24096
c2.large28192
c4.small44096
c4.medium48192
c4.large416384
c6.small66144
c6.medium612288
c6.large618432
c8.small88192
c8.medium816384
c8.large824576
c10.small1010240
c10.medium1020480
c10.large1030720
c12.small1212288
c12.medium1224576
c12.large1249152
c16.small1616384
c16.medium1632768
c16.large1665536
c20.small2020480
c20.medium2040960
c20.large2081920
c24.small2424576
c24.medium2449152
c24.large2498304
с1.xlarge18192
с2.xlarge216384
с4.xlarge432768
с6.xlarge649152
с8.xlarge865536
с10.xlarge1081920
с12.xlarge1298304
с16.xlarge16131072
с20.xlarge20163840
с24.xlarge24196608

Instance Type для compute.gpu.v1

Instance TypevCpuMemory, MbGPU, count
c32.g1.large321638401
c64.g2.large643276802

Disk Type

Disk TypeIOPS per GbMin IOPS
ssd.basic0.4200
ssd.fast2.0500
ssd.ultra10.01000

OS Images

Идентификаторы образов ОС приводятся для региона Москва, Авантаж ("zoneCode": "msk-avntg").

OS NameImage UUID
CentOS Stream 9b251649e-e993-4957-be9c-b0c2c9976c40
CentOS Stream 83273989e-a173-4ae5-8d3f-e2fe20f641e0
CentOS 740c18a90-f4de-407d-b7ac-d425b1064aab
Debian 1151d25ab7-7e48-455c-826d-9e66491580bd
Debian 10e4461471-8d18-4bd7-b336-c5d1820605cc
Debian 9c3016071-e995-411e-a78b-1569cf690540
Rocky Linux 9176ecee5-f64b-414e-b540-c27e6c11709f
Rocky Linux 8a1f7390d-145a-451e-aed2-7fb4199a5cc8
Ubuntu 22.04 LTS Servercd354813-aff7-423b-9d16-6820bce249f9

Пример запроса:

bash
curl --location --request POST 'https://gateway.cloud.mts.ru/ocs/v1/services' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Idempotency-Key: $IDEMPOTENCYKEY" \
--header "Authorization: Bearer $TOKEN" \
--data-raw '{
  "platform": {
      "productCode": "compute-cloud",
      "regionCode": "msk"
    },
  "kind": "compute",
  "metadata": {
      "title": "my-vm",
      "description": "Тестовая ВМ, созданная с помощью OpenAPI"
  },
  "projectId": "'$PROJECTID'",
  "spec":{
      "instance":{
         "instanceType":"c1.small",
         "platformId":"compute.v2"
      },
      "bootDisk":{
         "sizeGb":20,
         "diskType":"ssd.basic",
         "sourceImageId": "b251649e-e993-4957-be9c-b0c2c9976c40"
      },
      "secondaryDisks":[
         
      ],
      "users":[
         {
            "name":"example",
            "password":"",
            "sshKeys":[
               "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCENmvn+AC2a/uOBmqCZD5fIoan2yRcb10tgkJFxN+dHZlxcDbYTEpMd0LY5mWMuNObKiOhoZyrO3TOZ4/PUy6mcQIHvK+eY4k5KGk6GYiCKr3gUH6+V8KS+xfOWlRSn+5IHDFWhWCcLCFHZcXSINC+uLo88iBNb217902WWLYzujhQcT7/dP/w+r5TBLXLtH2xA2lRKeWwKwfYKUkfCQzm49u81EBzXykWlSOS9GeyOh5eJVSSjpPeC+bJJJGnX6PFKRHeTxjRK8q1kmEMZQovCg63VhfQjJEjpJuvh795G9TLJEg6alxPsilG+QZdjhwAre8CT16zu03YWeHNRVfJ"
            ]
         }
      ],
      "networkInterfaces":[
         {
            "networkId": "a46f1de2-e24d-4912-baa9-cfe2759a49d6",
            "subnetworkId": "afd1af0a-2da9-4d89-a45b-b5fb3badba84",
            "natIpId": "6ae9ec56-b34f-4a8a-87e7-416672b8c903"
         }
      ],
      "mts.extensions.promo":{
         "is_promo":false
      }
    },
  "zoneCode": "msk-avntg"
}'

В примере запроса выше:

  • в параметре "sourceImageId": "694f7882-8db6-410d-a899-d522ff5be2d7" указывается ID образа ОС (в приведенном примере - CentOS Stream 9);
  • при помощи параметра "networkInterfaces": [...]" указываются ID созданных сети/подсети/IP-адреса.

Процесс подключения к созданной виртуальной машине описан в данном разделе документации.