Работа с OpenStack CLI в Linux

Обновлено Обновлено: Опубликовано Опубликовано:

Виртуальная платформа на базе OpenStack позволяет управлять инфраструктурой из командной строки. Набор возможностей обширен, но мы рассмотрим базовые настройки и некоторые примеры, чтобы понять, как начать работу с данным инструментом, после чего уже можно будет с помощью официальной документации решить любую задачу, связанную с управлением инфраструктуры.

Установка пакетов

На рабочий компьютер администратора нам необходимо установить необходимые пакеты.

OpenStack CLI

OpenStack CLI — это приложение python и нам необходимо установить пакет python3-openstackclient. В зависимости от операционной системы, наши действия будут различаться.

а) Ubuntu / Debian:

apt update

apt install python3-openstackclient

б) Rocky 8 / CentOS 8:

dnf install https://www.rdoproject.org/repos/rdo-release.el8.rpm

dnf install python3-openstackclient

в) CentOS 7:

yum install https://rdoproject.org/repos/rdo-release.rpm

yum install python-openstackclient

Необходимые расширения

В базовой комплектации вышеустановленный пакет не содержит всех нужных функций по управлению openstack. Они разбиты на модули python. Мы можем установить их все или только те, которые нужны для наших целей.

Синтаксис установка следующий:

python3 -m pip install python-<service>client

* где могут быть следующие модули (service):

  • sahara — среда обработки данных.
  • cinder — блочное хранилище данных.
  • octavia — API балансировщика нагрузки.
  • glance — управление образами виртуальных машин.
  • heat — оркестратор, позволяющий разворачивать из шаблонов инфраструктуру по принципу IaC.
  • nova — контроль ресурсов — создание, запуск, перезапуск, остановка виртуальных машин и так далее.
  • manila — предоставляет хранилища для совместно используемых или распределенных файловых систем.
  • neutron — управление виртуальной сетевой инфраструктурой.

Например, для управления виртуальными машинами необходимо убедиться в наличие модуля:

python3 -m pip python-novaclient

Аутентификация

Инструмент установлен и теперь нам нужно пройти процедуру регистрации у поставщика облачной услуги. Для этого необходимо задать системные переменные, идентифицирующие подключение. Это немного различающийся набор данных, который зависит от провайдера. Как правило, в него входят сведения об адресе подключения, логин и пароль, номер проекта. Более точную информацию необходимо получить на сайте поставщика.

Пример системных переменных, которые задаются для авторизации:

  • OS_IDENTITY_API_VERSION — версия API.
  • OS_PROJECT_ID — идентификатор проекта.
  • OS_REGION_NAME — название региона.
  • OS_USER_DOMAIN_NAME — логический путь, где находится пользователь в openstack.
  • OS_USERNAME — логин пользователя для входа в личный кабинет.
  • OS_PASSWORD — пароль пользователя для входа в личный кабинет.
  • OS_AUTH_URL — адрес подключения к API openstack.

Все эти параметры необходимо уточнить в личном кабинете хостинг-провайдера Openstack. Их может быть больше или они могут иметь другие синонимы, например, не OS_PROJECT_ID, а OS_PROJECT_NAME.

Также могут потребоваться дополнительные действия. Например, на VK Cloud сначала нужно включить двухфакторную аутентификацию и активировать доступ по API.

После можно скачать готовый скрипт для регистрации openstack cli (на странице «Настройки проекта», вкладке «Доступ по API»). На компьютере администратора перед началом работы с openstack cli выполняем скачанный скрипт:

source <путь до скрипта>

Это был, всего лишь, пример для одного из поставщика услуг. У каждого могут быть свои нюансы, но в целом, они сводятся к данной процедуре.

Примеры команд

Как говорилось выше, openstack cli богат возможностями и командами. Полный их перечень можно узнать на официальной странице с документацией.

Мы же рассмотрим некоторые примеры. По возможности, их список будет пополняться.

1. Получение информации

Посмотреть список проектов:

openstack project list

Список созданных виртуальных машин:

openstack server list

Получить список шаблонов, которые описывают конфигурацию сервера:

openstack flavor list

Список образов дисков:

openstack image list

Данный список может быть большой и мы можем отфильтровать вывод, отобразив только активные образы:

openstack image list --status active

Также мы можем найти образы для конкретных систем:

openstack image list --status active | grep Ubuntu

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

openstack keypair list

Список сетей:

openstack network list

По умолчанию, данный список отображается в неудобном формате. Более удобный формат можно задать с помощью опции -f:

openstack network list -f yaml

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

openstack subnet list

Зоны доступности:

openstack availability zone list

Для разных объектом могут быть свои зоны доступности. Поэтому стоит фильтровать вывод с помощью опций:

  • --compute — зоны для виртуальных машин.
  • --network — сети.
  • --volume — диски.

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

Рассмотрим простой пример создания виртуальной машины.

Сначала создадим диск с помощью команды:

openstack volume create --size 16 --image b75595ca-4e1d-47e0-8e95-7a02edc0e242 --availability-zone MS1 --bootable my-volume-name

* где size — размер диска; image — образ, на основе которого будет создаваться диск; availability-zone — зона доступности; bootable — указывает, что диск будет загрузочный; my-volume-name — имя диска.

Напомню, что список образов и зон доступности можно посмотреть командами:

openstack image list

openstack availability zone list --volume

После создания диска мы увидим сводную информацию. В ней фиксируем его идентификатор:

...
| id  | afaa012a-d813-4006-be64-1cde2f61e062 |
...

Теперь можно создать виртуальную машину:

openstack server create my-vm-name --volume afaa012a-d813-4006-be64-1cde2f61e062 --network 398417ae-3da4-4105-9e08-fbe560abe4a2 --flavor Standard-2-2 --key-name my-key-name --availability-zone MS1

* где my-vm-name — название виртуальной машины; volume — идентификатор диска (его мы получили на предыдущем этапе); network — идентификатор сети; flavor — шаблон конфигурации сервера; key-name — ключевая пара; availability-zone — зона доступности.

Дополнительную информацию мы можем посмотреть командами:

openstack network list

openstack flavor list

openstack keypair list

openstack availability zone list --compute

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

3. Управление виртуальной машиной

Рассмотрим небольшие примеры того, что мы можем сделать с созданной виртуальной машиной.

Запустить:

openstack server start <ID виртуальной машины>

Остановить:

openstack server stop <ID виртуальной машины>

Перезагрузить:

openstack server reboot my-vm-name

Принудительно перезагрузить:

openstack server reboot --hard <ID виртуальной машины>

Удалить виртуальную машину:

openstack server delete my-vm-name

4. Разное

Создаем пару ключей SSH:

openstack keypair create my-key-name

Создать порт с фиксированным IP-адресом:

openstack port create --network <network-id> --fixed-ip subnet=<subnet-name>,ip-address=10.0.0.10 vm1-port1

* в данном примере будет создан порт с адресом 10.0.0.10 и названием vm1-port1.

При создании виртуальной машины, теперь мы можем использовать данный порт, чтобы выделить виртуальной машине IP-адрес:

openstack server create my-vm-name ... --port vm1-port1

Загрузить собственный образ в облако:

openstack image create --disk-format raw --file ./Rocky9-webserver.raw Rocky9-webserver

* в данном примере мы возьмем raw-файл образа Rocky9-webserver.raw и создадим из него образ с названием Rocky9-webserver.

Читайте также

Другая полезная информация:

Быстрое развертывание OpenStack при помощи DevStack.

# DevOps # Linux # Управление
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет