Работа с OpenStack CLI в Linux


Виртуальная платформа на базе OpenStack позволяет управлять инфраструктурой из командной строки. Набор возможностей обширен, но мы рассмотрим базовые настройки и некоторые примеры, чтобы понять, как начать работу с данным инструментом, после чего уже можно будет с помощью официальной документации решить любую задачу, связанную с управлением инфраструктуры.
Установка OpenStack CLI
Авторизация у провайдера
Примеры команд
Информация
Создание сервера
Управление инстансом
Разное
Дополнительная информация
Установка пакетов
На рабочий компьютер администратора нам необходимо установить необходимые пакеты.
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.
Читайте также
Другая полезная информация: