---
title: 'Настроить OpenStack CLI'
sidebar_label: 'Настроить OpenStack CLI'
sidebar_position: 2
description: 'Как установить консольный клиент для работы с OpenStack API и настроить авторизацию'
---

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

# Настроить OpenStack CLI

Настроить консольный клиент CLI можно:

* [средствами операционной системы](#configure-openstack-in-os);
* в [Docker-контейнере](#configure-openstack-in-docker-container).

## Настроить OpenStack CLI средствами ОС \{#configure-openstack-in-os}

1. [Установите OpenStack CLI](#install-openstack-cli).

2. [Добавьте сервисного пользователя](#add-service-user-for-os).

3. [Скачайте RC-файл сервисного пользователя для авторизации в OpenStack API](#download-rc-file-for-os).

4. [Настройте авторизацию в OpenStack API](#configure-authorization-in-os).

### 1. Установить OpenStack CLI \{#install-openstack-cli}

<Tabs queryString="install-openstack-cli">
  <TabItem value="ubuntu-debian" default>
    <TabItemLabel>
      Ubuntu/Debian
    </TabItemLabel>

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

    2. Установите Python 3 и `virtualenv`:

       ```bash
       sudo apt update
       sudo apt install python3 virtualenv
       ```

    3. Установите `pip3`:

       ```bash
       sudo apt install python3-pip
       ```

    4. Создайте виртуальную среду для работы с OpenStack:

       ```bash
       virtualenv env
       ```

    5. Активируйте виртуальную среду:

       ```bash
       source env/bin/activate
       ```

    6. Установите OpenStack CLI в виртуальную среду:

       ```bash
       pip3 install python-openstackclient
       ```

    7. Убедитесь, что OpenStack CLI установлен:

       ```bash
       openstack --version
       ```

       В ответе появится номер версии OpenStack CLI. Например:

       ```bash
       openstack 6.1.0
       ```

    8. Опционально: для работы с [облачными балансировщиками нагрузки](/cloud-servers/load-balancers/) установите компонент Octavia:

       ```bash
       pip3 install python-octaviaclient
       ```

    9. Опционально: для работы с [образами облачных серверов](/cloud-servers/images/) установите компонент Glance:

       ```bash
       pip3 install python-glanceclient
       ```

    10. Опционально: для работы с [файловыми хранилищами](/file-storage/) установите компонент Manila:

        ```bash
        pip3 install python-manilaclient==3.4.0
        ```
  </TabItem>

  <TabItem value="centos">
    <TabItemLabel>
      CentOS
    </TabItemLabel>

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

    2. Установите Python 3, `virtualenv` и `pip3`:

       ```bash
       sudo dnf update -y
       sudo dnf install python3 -y
       sudo dnf install virtualenv -y
       sudo dnf install python3-pip -y
       ```

    3. Установите OpenStack CLI в виртуальную среду:

       ```bash
       pip3 install python-openstackclient
       ```

    4. Убедитесь, что OpenStack CLI установлен:

       ```bash
       openstack --version
       ```

       В ответе появится номер версии OpenStack CLI. Например:

       ```bash
       openstack 6.1.0
       ```

    5. Опционально: для работы с [облачными балансировщиками нагрузки](/cloud-servers/load-balancers) установите компонент Octavia:

       ```bash
       pip3 install python-octaviaclient
       ```

    6. Опционально: для работы с [образами облачных серверов](/cloud-servers/images/) установите компонент Glance:

       ```bash
       pip3 install python-glanceclient
       ```

    7. Опционально: для работы с [файловыми хранилищами](/file-storage/) установите компонент Manila:

       ```bash
       pip3 install python-manilaclient==3.4.0
       ```
  </TabItem>

  <TabItem value="macos">
    <TabItemLabel>
      macOS
    </TabItemLabel>

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

    2. Установите Python 3 и `pip3`:

       ```bash
       brew install python3
       ```

    3. Установите `virtualenv`:

       ```bash
       pip3 install virtualenv
       ```

    4. Установите OpenStack CLI в виртуальную среду:

       ```bash
       brew install openstackclient
       ```

    5. Убедитесь, что OpenStack CLI установлен:

       ```bash
       openstack --version
       ```

       В ответе появится номер версии OpenStack CLI. Например:

       ```bash
       openstack 6.1.0
       ```

    6. Опционально: для работы с [облачными балансировщиками нагрузки](/cloud-servers/load-balancers) установите компонент Octavia:

       ```bash
       pip3 install python-octaviaclient
       ```

    7. Опционально: для работы с [образами](/cloud-servers/images/) установите компонент Glance:

       ```bash
       pip3 install python-glanceclient
       ```

    8. Опционально: для работы с [файловыми хранилищами](/file-storage/) установите компонент Manila:

       ```bash
       pip3 install python-manilaclient==3.4.0
       ```
  </TabItem>

  <TabItem value="windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. Установите Python, например [версию Python 3.12.0](https://www.python.org/downloads/release/python-3120/). Во время установки отметьте чекбокс **Add python.exe to PATH**.

    2. Установите [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/). Во время установки в разделе **Workloads** в блоке **Desktop & Mobile** отметьте чекбокс **Desktop development with C++**.

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

    4. Установите OpenStack CLI:

       ```bash
       pip3 install python-openstackclient
       ```

    5. Убедитесь, что OpenStack CLI установлен:

       ```bash
       openstack --version
       ```

       В ответе появится номер версии OpenStack CLI. Например:

       ```bash
       openstack 6.1.0
       ```

    6. Опционально: для работы с [облачными балансировщиками нагрузки](/cloud-servers/load-balancers) установите компонент Octavia:

       ```bash
       pip3 install python-octaviaclient
       ```

    7. Опционально: для работы с [образами облачных серверов](/cloud-servers/images/) установите компонент Glance:

       ```bash
       pip3 install python-glanceclient
       ```

    8. Опционально: для работы с [файловыми хранилищами](/file-storage/) установите компонент Manila:

       ```bash
       pip3 install python-manilaclient==3.4.0
       ```
  </TabItem>
</Tabs>

### 2. Добавить сервисного пользователя \{#add-service-user-for-os}

Для управления ресурсами проекта через OpenStack API [добавьте сервисного пользователя](/access-control/manage/add-user.mdx#add-service-user) с разрешением в области доступа **Проекты** и ролью:

* [`member`](/access-control/role-reference.mdx#member);
* или [`reader`](/access-control/role-reference.mdx#reader).

Добавлять пользователей может [Владелец аккаунта](/access-control/user-types.mdx#account-owner) или пользователи с ролью [`iam.admin`](/access-control/role-reference.mdx#iam-admin).

### 3. Скачать RC-файл \{#download-rc-file-for-os}

Для настройки авторизации нужно скачать RC-файл сервисного пользователя.

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

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

3. Откройте страницу сервисного пользователя, которого вы [добавили на этапе 2](#add-service-user-for-os) → вкладка **Доступ**.

4. В блоке **RC-файлы**:

   4.1. Выберите [проект](/access-control/projects/about-projects.mdx).

   4.2. Выберите [локацию](/infrastructure/locations.mdx).

   4.3. Нажмите **Скачать**.

### 4. Настроить авторизацию \{#configure-authorization-in-os}

:::info

Авторизацию в OpenStack API можно настроить только для одного [аккаунта](/account/), [сервисного пользователя](/access-control/access-management.mdx#roles), [проекта](/access-control/projects/about-projects.mdx) и [пула](/infrastructure/locations.mdx#pool).
Если вам нужно будет управлять ресурсами другого аккаунта, в другом проекте или пуле или под другим сервисным пользователем, [измените данные для авторизации](/cloud-servers/tools/openstack-cli/change-authorization-data.mdx).

:::

<Tabs queryString="configure-authorization-in-os">
  <TabItem value="unix" default>
    <TabItemLabel>
      Linux/macOS
    </TabItemLabel>

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

    2. Перейдите в директорию с RC-файлом, который вы [скачали на этапе 3](#download-rc-file-for-os):

       ```bash
       cd <directory_name>
       ```

       Укажите `<directory_name>` — имя директории с RC-файлом.

    3. Примените переменные окружения из RC-файла:

       ```bash
       source <file_name>
       ```

       Укажите `<file_name>` — имя RC-файла, который вы [скачали на этапе 3](#download-rc-file-for-os). По умолчанию `rc.sh`.

    4. Введите пароль OpenStack — пароль сервисного пользователя, для которого вы [скачали RC-файл на этапе 3](#download-rc-file-for-os).

    5. Убедитесь, что OpenStack CLI работает. Для этого откройте список облачных серверов:

       ```bash
       openstack server list
       ```

       Если в пуле и проекте, которые указаны в RC-файле, созданы облачные серверы, то в ответе появится их список. Если серверы пока не созданы, в ответе будет пустая строка.
  </TabItem>

  <TabItem value="windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

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

    2. Добавьте переменные окружения:

       ```bash
       set OS_AUTH_URL=<url>
       set OS_IDENTITY_API_VERSION=3
       set OS_VOLUME_API_VERSION=3
       set CLIFF_FIT_WIDTH=1
       set OS_PROJECT_DOMAIN_NAME=<account_id>
       set OS_PROJECT_ID=<project_id>
       set OS_TENANT_ID=<project_id>
       set OS_TENANT_NAME=<project_name>
       set OS_REGION_NAME=<pool>
       set OS_USER_DOMAIN_NAME=<account_id>
       set OS_USERNAME=<user_name>
       set OS_PASSWORD=<user_password>
       ```

       Укажите:

       * `<url>` — адрес (URL) для авторизации в API. Адрес зависит от региона и пула, его можно посмотреть в [списке URL](/api/urls/);
       * `<account_id>` — номер аккаунта. Можно посмотреть в [панели управления](https://my.selectel.ru/) в правом верхнем углу;
       * `<project_id>` — ID проекта. Можно скопировать в [панели управления](https://my.selectel.ru/vpc/): в верхнем меню нажмите **Продукты** и выберите **Облачные серверы** → откройте меню проектов (название текущего проекта) → в строке проекта нажмите <CopyIcon />;
       * `<project_name>` — имя проекта. Можно посмотреть в [панели управления](https://my.selectel.ru/vpc/): в верхнем меню нажмите **Продукты** и выберите **Облачные серверы** → откройте меню проектов (название текущего проекта) → скопируйте имя проекта;
       * `<pool>` — [пул](/infrastructure/locations.mdx#pool), например `ru-2`. Управлять инфраструктурой проекта можно будет только в этом пуле;
       * `<user_name>` — имя сервисного пользователя, которого вы [добавили на этапе 2](#add-service-user-for-os);
       * `<user_password>` — пароль сервисного пользователя. После создания пользователя посмотреть пароль нельзя — можно только сгенерировать новый. Подробнее в подразделе [Изменить пароль сервисного пользователя](/access-control/manage/edit-user-data-or-role.mdx#change-service-user-password) инструкции [Изменить данные и роль пользователя](/access-control/manage/edit-user-data-or-role.mdx).

    3. Убедитесь, что OpenStack CLI работает. Для этого откройте список облачных серверов:

       ```bash
       openstack server list
       ```

       Если в пуле и проекте, которые указаны в переменных, созданы облачные серверы, то в ответе появится их список. Если серверы пока не созданы, в ответе будет пустая строка.
  </TabItem>
</Tabs>

## Настроить OpenStack CLI в Docker-контейнере \{#configure-openstack-in-docker-container}

1. [Установите Docker](#install-docker).

2. [Добавьте сервисного пользователя](#add-service-user-for-docker).

3. [Скачайте RC-файл для авторизации в OpenStack API](#download-rc-file-for-docker).

4. [Установите OpenStack CLI в Docker-контейнере](#install-openstack-in-docker-container).

### 1. Установить Docker \{#install-docker}

Для установки Docker на локальный компьютер используйте инструкцию [Установить Docker](https://docs.docker.com/engine/install/) официальной документации Docker.

### 2. Добавить сервисного пользователя \{#add-service-user-for-docker}

Для управления ресурсами проекта через OpenStack API [добавьте сервисного пользователя](/access-control/manage/add-user.mdx#add-service-user) с разрешением в области доступа **Проекты** и ролью:

* [`member`](/access-control/role-reference.mdx#member);
* или [`reader`](/access-control/role-reference.mdx#reader).

Добавлять пользователей может [Владелец аккаунта](/access-control/user-types.mdx#account-owner) или пользователи с ролью [`iam.admin`](/access-control/role-reference.mdx#iam-admin).

### 3. Скачать RC-файл \{#download-rc-file-for-docker}

:::info

Авторизацию в OpenStack API можно настроить только для одного [аккаунта](/account/), [сервисного пользователя](/access-control/access-management.mdx#roles), [проекта](/access-control/projects/about-projects.mdx) и [пула](/infrastructure/locations.mdx#pool). Если после авторизации вам нужно будет управлять ресурсами другого аккаунта, в другом проекте или пуле или под другим сервисным пользователем, вы сможете [изменить данные для авторизации](/cloud-servers/tools/openstack-cli/change-authorization-data.mdx).

:::

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

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

3. Откройте страницу сервисного пользователя, которого вы [добавили на этапе 2](#add-service-user-for-docker) → вкладка **Доступ**.

4. В блоке **RC-файлы**:

   4.1. Выберите [проект](/access-control/projects/about-projects.mdx).

   4.2. Выберите [локацию](/infrastructure/locations.mdx).

   4.3. Нажмите **Скачать**.

### 4. Установить OpenStack CLI в Docker-контейнере \{#install-openstack-in-docker-container}

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

2. Создайте директорию для работы с Docker:

   ```bash
   mkdir <docker_directory>
   ```

   Укажите `<docker_directory>` — имя директории, в которую будет добавлен RC-файл и создан Dockerfile.

3. Переместите RC-файл в директорию:

   ```bash
   mv <file_name> <docker_directory>
   ```

   Укажите:

   * `<file_name>` — имя RC-файла, который вы [скачали на этапе 3](#download-rc-file-for-docker). По умолчанию `rc.sh`;
   * `<docker_directory>` — имя директории, в которую будет добавлен RC-файл и создан Dockerfile.

4. Создайте в этой директории пустой Dockerfile с помощью текстового редактора `nano`:

   ```bash
   nano Dockerfile
   ```

5. Добавьте в Dockerfile команды для установки OpenStack CLI:

   ```bash
   FROM alpine:3.17

   RUN apk add --update --no-cache python3 python3-dev libffi libffi-dev \
       git openssl openssl-dev cargo build-base iputils curl linux-headers \
       py3-pip py3-cffi py3-tz py3-pbr py3-setuptools && \
       pip3 install -UI git+https://github.com/openstack/python-openstackclient.git@stable/2024.2 \
                 git+https://github.com/openstack/python-glanceclient.git@stable/2024.2 \
                 git+https://github.com/openstack/python-octaviaclient.git@stable/2024.2 \
                 git+https://github.com/openstack/python-manilaclient.git@unmaintained/zed \
                 git+https://github.com/openstack/osc-lib.git@stable/2024.2 \
         && apk del build-base linux-headers python3-dev libffi-dev openssl-dev git cargo iputils curl && rm -rf /var/cache

   CMD ["sh"]
   ```

6. Выйдите из текстового редактора `nano` с сохранением изменений: нажмите **Ctrl+Х**, а затем **Y+Enter**.

7. Соберите Docker-контейнер:

   ```bash
   docker build -t osc:dalmatian .
   ```

8. Запустите Docker-контейнер:

   ```bash
   docker run -ti --rm -v $(pwd):/workspace osc:dalmatian
   ```

9. Перейдите в директорию `workspace`:

   ```bash
   cd /workspace
   ```

10. Примените переменные окружения из RC-файла:

    ```bash
    source <file_name>
    ```

    Укажите `<file_name>` — имя RC-файла, который вы [скачали на этапе 3](#download-rc-file-for-docker). По умолчанию `rc.sh`.

11. Введите пароль OpenStack — пароль сервисного пользователя, для которого вы [скачали RC-файл на этапе 3](#download-rc-file-for-docker).

12. Убедитесь, что OpenStack CLI работает. Для этого откройте список облачных серверов:

```bash
openstack server list
```

Если в пуле и проекте, которые указаны в RC-файле, созданы облачные серверы, в ответе появится их список. Если серверы пока не созданы, в ответе будет пустая строка.

<Formbricks />
