Заказ сервера 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_ПРОЕКТА>/compute/instances' -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",
    // ID и имя образа сервера. Подробнее см. раздел https://t1-cloud.ru/docs/article/api/znacheniya-parametrov-v-api#obraz-servera
    "image":{
        "id":"cf85e269-d367-4296-b07a-a1031f128a01",
        "name":"AltLinux10SP"},
    // Конфигурация сервера. Подробнее см. раздел https://t1-cloud.ru/docs/article/api/znacheniya-parametrov-v-api#konfiguraciya-servera
    "flavor":{
        "id":"490c6661-878d-4f21-bcc4-f1837d93273b",
        // Объём оперативной памяти в МБ
        "ram":2048,
        // Имя конфигурации - https://kb.t1-cloud.ru/pages/viewpage.action?pageId=4527319
         "name":"b4.medium.2",
        // Количество процессоров
        "vcpus":1},
    // Регион расположения сервера. Как получить список всех регионов - https://swagger.t1.cloud/?urls.primaryName=Compute#/regions/get_regions_api_v1_regions_get
    "region":{
        "id":"0c530dd3-eaae-4216-8f9d-9b5710a7cc30",
        "name":"ru-central1",
        // Описание сервера
        "description":""},
    // SSH-ключ для подключения к серверу. Как получить список SSH-ключей в текущем проекте - https://swagger.t1.cloud/?urls.primaryName=PortalBack#/ssh_keys/getV2ProjectsProjectNameSshKeys
  	// SSH-ключ не указывается, если настройки сервера указываются в сценарии cloud-init (в атрибуте "user_data")
    "ssh_keys":["b5dba483-b46e-4d7f-9278-1e4fec84b6cb"],"description":"",
    "volumes_config":{
        // Системный диск
        "boot_volume":{
            // Размер диска в ГБ
            "size":4,
            // ID, имя, тип диска. Подробнее см. раздел https://t1-cloud.ru/docs/article/api/znacheniya-parametrov-v-api#tip-diska
            "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, имя, тип диска. Подробнее см. раздел https://t1-cloud.ru/docs/article/api/znacheniya-parametrov-v-api#tip-diska
            "volume_type":{
                "id":"cb4724f6-e53e-4632-ac78-f83c4332add3",
                "name":"ceph_hdd",
                "extra_specs":{
                    "disk_type":"Light",
                    "max_read_iops":500,
                    "max_write_iops":300}}}]},
    // Группы безопасности (правила, контролирующие входящий и исходящий трафик сервера), можно указать несколько групп.
	// Как получить список всех групп безопасности - https://swagger.t1.cloud/?urls.primaryName=VPC#/security%20groups/get_security_groups_api_v1_projects__project_name__security_groups_get
    "security_groups":[{
        "id":"cef79960-4845-41b3-a4de-1b46c0849796",
        "name":"default"}],
    // Зона доступности (ЦОД), в которой будет находиться сервер.
	// Как получить список всех зон доступности - https://swagger.t1.cloud/?urls.primaryName=Compute#/availability%20zones/get_availability_zones_api_v1_availability_zones_get
    "availability_zone":{
        "id":"d3p1k01",
        "name":"ru-central1-a",
        "description":""},    
    "network_configuration":{
		// Сеть, к которой будет подключен сервер.
		// Как получить список всех сетей - https://swagger.t1.cloud/?urls.primaryName=VPC#/networks/get_networks_api_v1_projects__project_name__networks_get
        "network":{
            "id":"9e807a6f-02d6-4523-89c0-fcc8778f39b8"},
        // Подсеть, к которой будет подключен сервер.
		// Как получить список всех подсетей сети - https://swagger.t1.cloud/?urls.primaryName=VPC#/subnets/get_subnets_api_v1_projects__project_name__subnets_get
        "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,
            "requested_ip":"10.128.0.199"},         
		// Если публичный IP-адрес не нужен, удалите связанные с ним строки.		      
		// В параметре "add_public_ip" укажите true, если серверу нужно присвоить публичный IP-адрес, указанный в параметре "floating_ip_address"
		"add_public_ip":true,
		// В параметре "create_public_ip" укажите true, чтобы серверу автоматически присвоился IP-адрес из пула свободных публичных IP-адресов
        "create_public_ip":false,
            // # Как получить список всех IP-адресов - https://swagger.t1.cloud/?urls.primaryName=VPC#/ip-addresses/get_ip_addresses_api_v1_projects__project_name__subnets__subnet_id__ip_addresses_get
            "public_ip":{
                "item_id":"1c54e3cd-0b6d-4f01-a0b4-dade1888bd00",
                "order_id":"cd4275f4-e121-4d1f-b796-e8b0c079de23",
                "floating_ip_address":"80.85.250.149"},
        // Правило размещения сервера среди гипервизоров. Подробнее см. раздел https://t1-cloud.ru/docs/article/api/znacheniya-parametrov-v-api#politika-razmeshcheniya-servera
 		// Если политику размещения указывать не нужно, удалите связанные с ней строки.
       	"add_placement_policy":true,        
		"placement_policy":{
            "item_id":"90f65e4b-03c8-44c1-9056-b0b913631672",
            "order_id":"09b4ed8d-2868-41f6-b1cb-fcd62da68a00"}},
		// Передать сценарий настройки сервера можно с помощью cloud-init (в атрибуте "add_user_data").
	   // Подробнее см. раздел https://t1-cloud.ru/docs/article/cloud-engine-openstack/cloud-compute/zakaz-servera
	    "add_user_data":false,
        "count":1}}'

где:

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

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

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