---
title: "Создать несколько облачных серверов через OpenStack CLI"
sidebar_label: "Создать несколько облачных серверов"
sidebar_position: 5
description: "Пример создания нескольких облачных серверов через OpenStack CLI"
toc_max_heading_level: 2
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'

# Создать несколько облачных серверов через OpenStack CLI

Используйте флаг `--debug` в командах OpenStack CLI, чтобы включить отображение отладочной информации при выполнении команд.
Флаг выводит полные запросы к OpenStack API, ответы серверов, а также внутренние шаги выполнения команды.
Это помогает диагностировать проблемы с аутентификацией, конфигурацией или взаимодействием с сервисами OpenStack.

1. Опционально: [настройте OpenStack CLI](#configure-openstack-cli).

2. Опционально: [добавьте SSH-ключ сервисному пользователю](#add-public-ssh-key).

3. [Создайте приватную сеть и подсеть](#create-networks).

4. [Создайте облачный роутер, подключенный к интернету](#create-cloud-router).

5. [Подключите приватную сеть к облачному роутеру](#connect-private-subnet-to-cloud-router).

6. [Создайте порты для облачных серверов](#add-ports-for-servers).

7. [Создайте облачные серверы](#create-servers).

8. [Создайте публичные плавающие IP-адреса](#create-public-floating-ips).

9. [Подключите публичные плавающие IP-адреса к облачным серверам](#connect-public-ips-to-cloud-servers).

## 1. Опционально: настроить OpenStack CLI \{#configure-openstack-cli}

Используйте подраздел [Настроить OpenStack CLI средствами ОС](/cloud-servers/tools/openstack-cli/configure-openstack-cli.mdx#configure-openstack-in-os) или [Настроить OpenStack CLI в Docker-контейнере⁠](/cloud-servers/tools/openstack-cli/configure-openstack-cli.mdx#configure-openstack-in-docker-container) инструкции OpenStack CLI.

Если вы уже настроили OpenStack CLI, [запустите его](/cloud-servers/tools/openstack-cli/run-openstack-cli.mdx).

## 2. Опционально: добавить публичный SSH-ключ сервисному пользователю \{#add-public-ssh-key}

Если у сервисного пользователя, через которого вы авторизовались в OpenStack API, уже добавлен SSH-ключ, пропустите шаг.

1. [Создайте SSH-ключ](/cloud-servers/manage/create-and-place-ssh-key.mdx#create-ssh-keys).

2. В [панели управления](https://my.selectel.ru/iam/service-users) в верхнем меню нажмите **IAM**.

3. Перейдите в раздел **Сервисные пользователи**.

4. Откройте страницу сервисного пользователя → вкладка **Доступ**.

5. В строке **SSH-ключи** нажмите **Добавить ключ**.

6. Введите имя ключа.

7. В поле **Публичный ключ** вставьте публичный ключ, который вы создали на шаге 1.

8. Нажмите **Добавить**.

## 3. Создать приватную сеть и подсеть \{#create-networks}

1. Откройте CLI.

2. Создайте приватную сеть:

   ```bash
   openstack network create <network_name>
   ```

   Укажите `<network_name>` — имя приватной сети.

3. Создайте подсеть в приватной сети:

   ```bash
   openstack subnet create \
       --subnet-range <cidr> \
       <dhcp> \
       --gateway <gateway> \
       --network <network> \
       <subnet_name>
   ```

   Укажите:

   * `<cidr>` — CIDR приватной подсети, например `192.168.0.0/24`;
   * `<dhcp>` — настройка опции DHCP. Укажите одно из значений:
     * `--dhcp` — включить DHCP;
     * `--no-dhcp` — отключить DHCP;
   * `<gateway>` — IP-адрес [шлюза по умолчанию](/cloud-servers/cloud-networks/private-networks-and-subnets.mdx#default-gateway), например `192.168.0.1`;
   * `<network>` — ID или имя приватной сети, которую вы создали на шаге 2;
   * `<subnet_name>` — имя приватной подсети.

## 4. Создать облачный роутер, подключенный к интернету \{#create-cloud-router}

1. Создайте облачный роутер:

   ```bash
   openstack router create <router_name>
   ```

   Укажите `<router_name>` — имя облачного роутера.

2. Опционально: подключите облачный роутер к интернету — для роутера будет выделен внешний IP-адрес:

   ```bash
   openstack router set --external-gateway external-network <router>
   ```

   Укажите `<router>` — ID или имя облачного роутера, который вы создали на шаге 1.

## 5. Подключить подсеть к облачному роутеру \{#connect-private-subnet-to-cloud-router}

1. Подключите подсеть к облачному роутеру:

   ```bash
   openstack router add subnet <router> <subnet>
   ```

   Укажите:

   * `<router>` — ID или имя облачного роутера, который вы [создали на этапе 5](#create-cloud-router);
   * `<subnet>` — ID или имя приватной подсети, которую вы [создали на этапе 4](#create-networks).

## 6. Добавить порты для серверов в подсеть \{#add-ports-for-servers}

1. Создайте порт в подсети:

   ```bash
   openstack port create \
       --network <network> \
       --fixed-ip subnet=<subnet>,ip-address=<port_ip_address> \
       <port_name>
   ```

   Укажите:

   * `<network>` — ID или имя приватной сети, которую вы [создали на этапе 4](#create-networks). Список сетей можно посмотреть с помощью команды `openstack network list`;
   * `<subnet>` — ID или имя подсети, которую вы [создали на этапе 4](#create-networks). Список подсетей можно посмотреть с помощью команды `openstack subnet list`;
   * `<port_ip_address>` — IP-адрес порта;
   * `<port_name>` — имя порта.

2. Повторите шаг 1, чтобы создать порты для каждого нового облачного сервера.

## 7. Создать облачные серверы \{#create-servers}

1. Создайте облачный сервер:

   ```bash
   openstack server create \
       [--image <image> | --volume <volume> | --snapshot <snapshot>] \
       --flavor <flavor> \
       --availability-zone <pool_segment> \
       --nic port-id=<port_uuid> \
       --security-group <security_group> \
       --key-name <key_name> \
       <server_name>
   ```

   Укажите:

   * тип источника:
     * `--image <image>` — для создания сервера из [готового](/cloud-servers/images/about-images.mdx#default-images) или [собственного образа](/cloud-servers/images/about-images.mdx#own-images). Параметр `<image>` — ID или имя образа. Образ должен находиться в одном пуле с сервером. Список образов можно посмотреть с помощью команды `openstack image list`;
     * `--volume <volume>` — для создания сервера из [сетевого диска](/cloud-servers/volumes/about-network-volumes.mdx). Параметр `<volume>` — ID или имя диска. Диск должен находиться в одном сегменте пула с сервером. Список сетевых дисков можно посмотреть с помощью команды `openstack volume list`;
     * `--snapshot <snapshot>` — для создания сервера из [снапшота](/cloud-servers/volumes/snapshots.mdx). Параметр `<snapshot>` — ID или имя снапшота. Снапшот должен находиться в одном сегменте пула с сервером. Список снапшотов можно посмотреть с помощью команды `openstack snapshot list`;
   * `<flavor>` — ID или имя флейвора. Флейворы соответствуют [конфигурациям облачного сервера](/cloud-servers/create/configurations.mdx) и определяют количество vCPU, RAM и размер локального диска (опционально) сервера. Можно использовать флейворы фиксированных конфигураций или [создать флейвор](/cloud-servers/create/create-flavor.mdx). Например, `1013` — ID для создания сервера с фиксированной конфигурацией линейки Standard с 2 vCPU, 4 ГБ RAM в пуле ru-3. Список флейворов можно посмотреть с помощью команды `openstack flavor list` или в таблице [Список флейворов фиксированной конфигурации во всех пулах](/cloud-servers/create/configurations.mdx#server-flavors-full-list);
   * `<pool_segment>` — [сегмент пула](/infrastructure/locations.mdx#pool), в котором будет создан облачный сервер, например `ru-9a`. Список доступных сегментов пула можно посмотреть в инструкции [Доступность продуктов в локациях](/infrastructure/product-availability-by-location.mdx);
   * `<port_uuid>` — ID порта, который вы [создали на этапе 7](#add-ports-for-servers). Список портов можно посмотреть с помощью команды `openstack port list`;
   * `<security_group>` — ID или имя группы безопасности, которая будет назначена на все порты сервера. Чтобы создать сервер с группой безопасности, в сети должна быть включена [фильтрация трафика (port security)](/cloud-servers/cloud-networks/about-networks.mdx#traffic-filtering-port-security). Список групп можно посмотреть с помощью команды `openstack security group list`;
   * `<key_name>` — имя публичного SSH-ключа для сервисного пользователя, который вы [добавили на этапе 2](#add-public-ssh-key). Список ключей можно посмотреть с помощью команды `openstack keypair list`;
   * опционально: `--block-device-mapping vdb=<extra_volume>` — ID или имя дополнительного диска. Список дисков можно посмотреть с помощью команды `openstack volume list`;
   * опционально: `--property x_cloud_smt_enabled=false` — выключение [Hyper-Threading (SMT)](/cloud-servers/about/dedicated-cores.mdx#hyper-threading). Если параметр не указан — Hyper-Threading (SMT) будет включен по умолчанию. Можно использовать только с флейворами, которые поддерживают работу [выделенных ядер](/cloud-servers/about/dedicated-cores.mdx). Список флейворов можно посмотреть в таблице [Список флейворов фиксированной конфигурации во всех пулах](/cloud-servers/create/configurations.mdx#server-flavors-full-list);
   * опционально: `--property x_cloud_numa_nodes=1` — размещение ресурсов на одной NUMA-ноде. Можно использовать только с флейворами, которые поддерживают работу [выделенных ядер](/cloud-servers/about/dedicated-cores.mdx). Список флейворов можно посмотреть в таблице [Список флейворов фиксированной конфигурации во всех пулах](/cloud-servers/create/configurations.mdx#server-flavors-full-list);
   * опционально: `--tag <tag_name> --os-compute-api-version 2.52` — [тег](/cloud-servers/manage/tags.mdx) для добавления дополнительной информации о сервере;
   * опционально: `--tag preemptible --os-compute-api-version 2.72` — тег для создания [прерываемого сервера](/cloud-servers/about/preemptible-servers.mdx);
   * опционально: `--user-data <user_data.file>` — путь до скрипта с данными, закодированными в Base64. Сценарии и задачи из скрипта выполнятся при первой загрузке операционной системы. Примеры скриптов можно посмотреть в инструкции [User data](/cloud-servers/manage/user-data.mdx);
   * `<server_name>` — имя сервера.

2. Повторите шаг 1, чтобы создать нужное количество серверов.

## 8. Создать публичные плавающие IP-адреса \{#create-public-floating-ips}

1. Создайте публичный плавающий IP-адрес:

   ```bash
   openstack floating ip create external-network
   ```

2. Повторите шаг 1, чтобы создать публичные плавающие IP-адреса для всех облачных серверов.

## 9. Подключить публичные плавающие IP-адреса к облачным серверам \{#connect-public-ips-to-cloud-servers}

1. Подключите публичный плавающий IP-адрес к порту облачного сервера:

   ```bash
   openstack floating ip set --port <port> <floating_ip_address>
   ```

   Укажите:

   * `<port>` — ID порта облачного сервера, который вы [добавили на этапе 7](#add-ports-for-servers);
   * `<floating_ip_address>` — ID или публичный плавающий IP-адрес, который вы [создали на этапе 9](#create-public-floating-ips). Список публичных плавающих IP-адресов можно посмотреть с помощью команды `openstack floating ip list`.

2. Повторите шаг 1, чтобы подключить публичные плавающие IP-адреса ко всем облачным серверам.

<Formbricks />
