Заказ сервера OpenStack (через API)

Чтобы заказать сервер на базе OpenStack:

  1. Создайте сервисный аккаунт.
  2. Создайте API-ключ.
  3. Для выполнения API-запросов получите сессионный токен.
  4. Для заказа сервера (instance) выполните POST-запрос согласно примеру:
curl -sS -X POST 'https://api.t1.cloud/order-service/api/v1/projects/<ID_ПРОЕКТА>/orders' -H 'accept: application/json' -H 'Content-Type: application/json' -H "Authorization: <ТОКЕН>" -d '
{"order":
{"project_name":"<ID_ПРОЕКТА>","product_id":"e6fa78c9-2ee1-4f9e-b86c-5d7246f38526",
"attrs":{
    // Имя сервера
    "name":"testvm",
    // Описание сервера
    "description":"Сервер для тестирования приложений",
    // ID и имя образа сервера
    "image":{
        "id":"cf85e269-d367-4296-b07a-a1031f128a01",
        "name":"AltLinux10SP"},
    // Конфигурация сервера
    "flavor":{
        "id":"ffeb427e-dacc-409b-b77a-8c61056de2f7",
        // Объём оперативной памяти в МБ
        "ram":12288,
		"gpus":0,
        // Имя конфигурации
         "name":"b4.large.6",
        // Количество процессоров
        "vcpus":2},
    // Регион расположения сервера
    "region":{
        "id":"0c530dd3-eaae-4216-8f9d-9b5710a7cc30",
        "name":"ru-central1",
        "description":""},
    "volumes_config":{
        // Системный диск
        "boot_volume":{
            // Размер диска в ГБ
            "size":4,
            // ID, имя, тип диска
            "volume_type":{
                "id":"bcd198cb-a231-4f78-bce6-e165ef458d16",
                "name":"dorado-sp01",
                "extra_specs":{
                    "disk_type":"High cluster 1",
                    "max_read_iops":15000,
                    "max_write_iops":5000}}},
        // Дополнительный диск (если нужен)
        "extra_volumes":[{
            "name":"dopdisk",
            // Размер диска в ГБ
            "size":5,
            // ID, имя, тип диска
            "volume_type":{
                "id":"cb4724f6-e53e-4632-ac78-f83c4332add3",
                "name":"ceph_hdd",
                "extra_specs":{
                    "disk_type":"Light",
                    "max_read_iops":500,
                    "max_write_iops":300}}}],
    // Группы безопасности (правила, контролирующие входящий и исходящий трафик сервера), можно указать несколько групп
    "security_groups":[{
        "id":"cef79960-4845-41b3-a4de-1b46c0849796",
        "name":"default"}],
    // Зона доступности (ЦОД), в которой будет находиться сервер
	"availability_zone":{
        "id":"d3p1k01",
        "name":"ru-central1-a",
        "description":""},    
    "network_configuration":{
		// Сеть, к которой будет подключен сервер
		"network":{
            "id":"9e807a6f-02d6-4523-89c0-fcc8778f39b8"},
        // Подсеть, к которой будет подключен сервер
		"subnet":{
            "id":"ec2e4a65-8e09-43f7-8355-64ca0ec7e83b",
            "cidr":"10.128.0.0/24",
            "name":"default-ru-central1-a"},
        // IP-адрес сетевого интерфейса. Если установлено false, параметр "requested_ip" не указывается
        "set_ip_address":true,
	    // Укажите true, если нужно подключить сервер к подсети другого проекта (не того, в котором заказывается сервер)
		"toggle_shared_network":false,
        "requested_ip":"10.128.0.199"},         
		// Если публичный IP-адрес не нужен, удалите связанные с ним строки.		      
		// В параметре "add_public_ip" укажите true, если к серверу нужен доступ из сети Интернет
  		"add_public_ip":true,
		// В параметре "create_public_ip" укажите true, чтобы серверу автоматически присвоился IP-адрес из пула свободных публичных IP-адресов.
		// Укажите false, если серверу нужно присвоить публичный IP-адрес, указанный в параметре "floating_ip_address"
        "create_public_ip":false,
		// Если в параметрах "add_public_ip" и "create_public_ip" указано true, то в параметре "bandwidth" укажите ограничение пропускной способности канала - от 100 до 10000 Мбит/сек.
		"bandwidth":2000,
            // Если в параметре "add_public_ip" указано true, а в параметре "create_public_ip" указано false, то укажите ИД публичного IP-адреса, ИД заказа и публичный IP-адрес
        "public_ip":{
            "item_id":"1c54e3cd-0b6d-4f01-a0b4-dade1888bd00",
            "order_id":"cd4275f4-e121-4d1f-b796-e8b0c079de23",
            "floating_ip_address":"80.85.250.149"},
        // Правило размещения сервера среди гипервизоров. Если политику размещения указывать не нужно, удалите связанные с ней строки.
		"add_placement_policy":true,        
		"placement_policy":{
            "item_id":"90f65e4b-03c8-44c1-9056-b0b913631672",
            "order_id":"09b4ed8d-2868-41f6-b1cb-fcd62da68a00"},
		// SSH-ключ для подключения к серверу. SSH-ключ не указывается, если в параметре "add_user_data" указано true
   			"ssh_keys":["b5dba483-b46e-4d7f-9278-1e4fec84b6cb"],
		// Укажите true, если нужно передать сценарий настройки сервера с помощью cloud-init
	        "add_user_data":false,
		// Если в параметре "add_user_data" указано true, то напишите сценарий cloud-init в формате YAML или shell
			"user_data":""}}}'

где:

  • <ID_ПРОЕКТА> идентификатор проекта.

    1. Щёлкните на текущий контекст. Подробнее см. раздел Выбор организации, папки или проекта.
    2. Выберите организацию.
    3. В списке найдите нужный проект. Идентификатор проекта указан в столбце Идентификатор.
  • <ТОКЕН> сессионный токен, полученный в шаге 3.

Параметры

ПараметрПример значенияОписаниеОбязательный?
project_nameproj-7jokmecsqrИдентификатор проектаДа
product_ide6fa78c9-2ee1-4f9e-b86c-5d7246f38526Идентификатор продуктаДа
nameserver1Имя сервераДа
descriptionСервер для тестирования приложений

Описание сервера

Нет
Образ сервера (image)

image.id

cf85e269-d367-4296-b07a-a1031f128a01

Идентификатор образа сервера.

Список идентификаторов образов можно посмотреть:


Если вы хотите использовать образ, который самостоятельно загрузили или создали из диска, то ИД такого образа можно получить с помощью запроса в Swagger

Да

image.name

AltLinux10SP

Имя образа сервера.

Список имён образов можно посмотреть:


Если вы хотите использовать образ, который самостоятельно загрузили или создали из диска, то имя такого образа можно получить с помощью запроса в Swagger

Да

Конфигурация сервера (flavor)

flavor.idffeb427e-dacc-409b-b77a-8c61056de2f7

Идентификатор конфигурации сервера.

Список идентификаторов конфигураций можно посмотреть:


Да
flavor.ram12288

Объём оперативной памяти в МБ.

Объём оперативной памяти у конфигураций можно посмотреть:


Да
flavor.gpus0

Количество процессоров (vGPU)

Нет
flavor.nameb4.large.6

Имя конфигурации сервера.

Список имён конфигураций можно посмотреть:


Да
flavor.vcpus2

Количество процессоров (vCPU).

Количество процессоров у конфигураций можно посмотреть:


Да

Регион расположения сервера (region)

region.id0c530dd3-eaae-4216-8f9d-9b5710a7cc30

Идентификатор региона расположения сервера. Доступен только 1 регион

Да
region.nameru-central1

Название региона расположения сервера. Доступен только 1 регион

Нет
region.descriptionМоскваОписание региона расположения сервераНет

Системный диск (boot_volume)

volumes_config.boot_volume.size

4

Размер системного диска в ГБ

Да

volumes_config.boot_volume.volume_type.id

bcd198cb-a231-4f78-bce6-e165ef458d16

Идентификатор типа диска.

Список идентификаторов типов дисков можно посмотреть:


Да

volumes_config.boot_volume.volume_type.name

dorado-sp01

Название типа диска.

Список названий типов дисков можно посмотреть:


Да

volumes_config.boot_volume.volume_type.extra_specs.disk_type

High cluster 1

Тип диска.

Список типов дисков можно посмотреть:


Да

volumes_config.boot_volume.volume_type.extra_specs.max_read_iops

15000

Количество IOPS на чтение у типа диска.

Количество IOPS можно посмотреть:


Нет

volumes_config.boot_volume.volume_type.extra_specs.max_write_iops

5000

Количество IOPS на запись у типа диска.

Количество IOPS можно посмотреть:


Нет
Дополнительный диск (extra_volumes)

volumes_config.extra_volumes.name

dopdisk

Название дополнительного дика

Нет

volumes_config.extra_volumes.size

5

Размер дополнительного диска в ГБ

Нет

volumes_config.extra_volumes.volume_type.id

cb4724f6-e53e-4632-ac78-f83c4332add3

Идентификатор типа диска.

Список идентификаторов типов дисков можно посмотреть:


Нет

volumes_config.extra_volumes.volume_type.name

ceph_hdd

Название типа диска.

Список названий типов дисков можно посмотреть:


Нет

volumes_config.extra_volumes.volume_type.extra_specs.disk_type


Light

Тип диска.

Список типов дисков можно посмотреть:


Нет

volumes_config.extra_volumes.volume_type.extra_specs.max_read_iops


500

Количество IOPS на чтение у типа диска.

Количество IOPS можно посмотреть:


Нет

volumes_config.extra_volumes.volume_type.extra_specs.max_write_iops

300

Количество IOPS на запись у типа диска.

Количество IOPS можно посмотреть:


Нет

Группы безопасности (security_groups)

security_groups.id

cef79960-4845-41b3-a4de-1b46c0849796

Идентификатор группы безопасности. Можно указать несколько групп.

Список идентификаторов групп безопасности можно посмотреть с помощью запроса в Swagger

Да

security_groups.name

default

Название группы безопасности. Можно указать несколько групп.

Список названий групп безопасности можно посмотреть с помощью запроса в Swagger

Да

Зона доступности (availability_zone)

availability_zone.id

d3p1k01

ИД зоны доступности (ЦОД), в которой будет находиться сервер. Доступна только 1 зона доступности

Да

availability_zone.name

ru-central1-a

Название зоны доступности (ЦОД), в которой будет находиться сервер. Доступна только 1 зона доступности

Да

availability_zone.description

ЦОД Москва

Описание зоны доступности (ЦОД), в которой будет находиться сервер

Нет
Сеть (network_configuration)

network_configuration.network.id

9e807a6f-02d6-4523-89c0-fcc8778f39b

Идентификатор сети, к которой будет подключен сервер.

Список идентификаторов сетей можно посмотреть с помощью запроса в Swagger

Да

network_configuration.subnet.id

ec2e4a65-8e09-43f7-8355-64ca0ec7e83b

Идентификатор подсети, к которой будет подключен сервер.

Список идентификаторов подсетей можно посмотреть с помощью запроса в Swagger

Да

network_configuration.subnet.cidr

10.128.0.0/24

CIDR

Нет

network_configuration.subnet.name

default-ru-central1-a

Название подсети, к которой будет подключен сервер.

Список названий подсетей можно посмотреть с помощью запроса в Swagger

Нет

network_configuration.set_ip_address

true

Укажите true, если нужно задать IP-адрес сетевого интерфейса вручную. IP-адрес укажите в параметре requested_ip.

Укажите false, если нужно задать IP-адрес автоматически

Да

network_configuration.toggle_shared_network

false

Укажите true, если нужно подключить сервер к подсети другого проекта (не того, в котором заказывается сервер).

Укажите false, если нужно подключить сервер к подсети проекта, в котором заказывается сервер

Нет

network_configuration.requested_ip

10.128.0.199

IP-адрес сетевого интерфейса

Да, если в параметре set_ip_address указано true
Публичный IP-адрес

add_public_ip

true

Укажите true, если к серверу нужен доступ из сети Интернет. Иначе укажите false

Да

create_public_ip

true

Укажите true, если серверу нужно автоматически присвоить IP-адрес из пула свободных публичных IP-адресов.

Укажите false, если серверу нужно присвоить публичный IP-адрес, указанный в параметре floating_ip_address

Да, если в параметре add_public_ip указано true

bandwidth

500

Ограничение пропускной способности канала - от 100 до 10 000 Мбит/сек

Да, если в параметрах add_public_ip и create_public_ip указано true

public_ip.item_id

1c54e3cd-0b6d-4f01-a0b4-dade1888bd00

Идентификатор публичного IP-адреса.

Список идентификаторов публичных IP-адресов можно посмотреть с помощью запроса в Swagger

Да, если в параметре add_public_ip указано true и в параметре create_public_ip указано false

public_ip.order_id

cd4275f4-e121-4d1f-b796-e8b0c079de23

Идентификатор заказа публичного IP-адреса.

Список идентификаторов заказов публичных IP-адресов можно посмотреть с помощью запроса в Swagger

Да, если в параметре add_public_ip указано true и в параметре create_public_ip указано false

public_ip.floating_ip_address

80.85.250.149

Публичный IP-адрес, который нужно присвоить серверу.

Список созданных IP-адресов можно посмотреть с помощью запроса в Swagger

Да, если в параметре add_public_ip указано true и в параметре create_public_ip указано false
Политика размещения сервера на гипервизорах
add_placement_policytrue

Укажите true, если нужно указать политику размещения сервера на гипервизорах. Иначе укажите false

Да

placement_policy.item_id

90f65e4b-03c8-44c1-9056-b0b913631672

Идентификатор политики размещения.

Список идентификаторов политик размещения можно посмотреть с помощью запроса в Swagger

Да, если в параметре add_placement_policy указано true

placement_policy.order_id

09b4ed8d-2868-41f6-b1cb-fcd62da68a00

Идентификатор заказа политики размещения.

Список идентификаторов заказов политик размещения можно посмотреть с помощью запроса в Swagger

Да, если в параметре add_placement_policy указано true
SSH-ключи и cloud-init
ssh_keysb5dba483-b46e-4d7f-9278-1e4fec84b6cb

SSH-ключ для подключения к серверу.

Список проектных SSH-ключей можно посмотреть с помощью запроса в Swagger.

Список личных SSH-ключей можно посмотреть с помощью запроса в Swagger

Да, если в параметре add_user_data указано false.

Нет, если соблюдается одно из условий:

  • в параметре add_user_data указано true;
  • в параметре image.name указан один из образов:
    • Windows Server 2012_std
    • Windows Server 2016_std
    • Windows Server 2019_std
    • Windows Server 2019_core
    • Windows Server 2022_std

add_user_data

false

Укажите true, если нужно передать сценарий настройки сервера с помощью cloud-init. В параметре user_data напишите сценарий cloud-init в формате YAML или shell.

Иначе укажите false


Нет

user_data

#cloud-config
ssh_pwauth: true
users:
- name: qa
  gecos: QA User
  passwd: $y$j9T$3mh./8QBp1FtRBFmOGQ0e/$GGFkNSZe1W/iqrv7P8.TvrS5PDRgTL1m2U1Brg0QAA3
  shell: /bin/bash
  lock_passwd: false

Сценарий cloud-init в формате YAML или shell

Да, если в параметре add_user_data указано true

В этой статье

Мы ответили на ваш вопрос?