Установка и настройка¶
Установка¶
Важно
Перед началом установки необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.
Режим суперпользователя:
sudo -i
Важно
Установка производится на управляющий узел.
Перед началом установки сохраните список установленных ранее пакетов, это позволит Вам безболезненно восстановить систему в случае ее повреждения. Для этого выполните следующие команды:
mkdir -p /tmp/rollback/clouds pip3 freeze > /tmp/rollback/clouds/pip_before.txt
После чего в каталоге
/tmp/rollback/clouds
будет находиться файлpip_before.txt
с перечнем установленных приложений.Также сохраните версии миграции:
openstack aos db list -n clouds > /tmp/rollback/clouds/migrations.txt
Где:
/tmp/rollback/clouds/
- директория файла;migrations.txt
- наименование файла с версиями миграций.
Установите пакет Clouds:
pip3 install clouds
Сохраните список установленных пакетов после установки для возможности отката изменений:
pip3 freeze > /tmp/rollback/clouds/pip_after.txt
Настройка¶
Выполните первичную настройку модуля:
openstack aos configure -n clouds
Создайте каталог для логов с нужными правами:
mkdir -p /var/log/aos/clouds chown -R aos:aos /var/log/aos/clouds
Скопируйте образец конфигурационного файла, при использовании нестандартных параметров отредактируйте их (подробнее см. Файл конфигурации):
cp /etc/aos/clouds.conf.example /etc/aos/clouds.conf
Создайте базу данных на примере MySQL, настройте права, тип базы и остальные параметры:
# Зайдите в базу данных, используя пароль пользователя root mysql -uroot -p # Создайте базу данных clouds CREATE DATABASE clouds; # Дайте пользователю права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных clouds GRANT ALL PRIVILEGES ON clouds.* TO 'aos'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON clouds.* TO 'aos'@'%' IDENTIFIED BY 'password'; # Осуществите выход из базы данных
Отредактируйте секцию
[database]
конфигурационного файлаetc/aos/clouds.conf
, например:[database] url = mysql+pymysql://aos:password@tst.stand.loc:3306/clouds?charset=utf8
Выполните синхронизацию базы данных:
openstack aos db migrate -n clouds
Создайте пользователя в OpenStack для API сервисов:
openstack user create --domain default --project service --project-domain default --password password --or-show aos
Назначьте пользователю роль service:
openstack role add --user aos --user-domain default --project service --project-domain default service
Включите и запустите службы systemd:
systemctl daemon-reload systemctl enable aos-clouds-api.service aos-clouds-worker.service systemctl start aos-clouds-api.service aos-clouds-worker.service
Создайте сервис Clouds API:
openstack service create --name clouds --description "Clouds Service" clouds
Создайте точки входа:
openstack endpoint create --region RegionOne clouds internal http://controller:9366 openstack endpoint create --region RegionOne clouds admin http://controller:9366 openstack endpoint create --region RegionOne clouds public http://controller:9366
Подключение драйверов¶
Подключение драйвера Nova Compute¶
Функционал драйвера¶
Функционал драйвера включает в себя создание и удаление виртуальных машин, включение и выключение виртуальных машин в облаке.
Порядок подключения драйвера Nova Compute¶
Установите пакет
clouds-drivers
на вычислительном и управляющем узлах:pip3 install clouds-drivers
Установите драйвер в конфигурационном файле Nova -
/etc/nova/nova.conf
:AWS:
[DEFAULT] compute_driver = clouds_drivers.nova.virt.ec2.EC2Driver
Yandex:
[DEFAULT] compute_driver = clouds_drivers.nova.virt.yandex.driver.YandexDriver
Перезапустите сервис
nova-compute
:# Debian: systemctl restart nova-compute.service
Установите фильтр планировщика в конфигурационном файле Nova на управляющем узле
/etc/nova/nova.conf
(должен быть установлен пакет clouds-drivers):[filter_scheduler] available_filters = nova.scheduler.filters.all_filters available_filters = clouds_drivers.nova.scheduler.filter.CloudProjectFilter enabled_filters = AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,CloudProjectFilter
Перезапустите сервис
nova-scheduler
на управляющем узле:# Debian: systemctl restart nova-scheduler.service
Подключение драйвера Cinder Volume¶
Функционал драйвера¶
Функционал драйвера включает в себя создание и удаление дисков в облаке, подключение дисков к виртуальным машинам, отключение от виртуальных машин, созданных в облаке.
Порядок подключения драйвера Cinder Volume¶
Установите пакет
clouds-drivers
на узле со службойcinder-volume
:pip3 install clouds-drivers
Установите и настройте драйвер в конфигурационном файле Cinder
/etc/cinder/cinder.conf
:AWS:
[DEFAULT] enabled_backends = ebs [ebs] volume_driver = clouds_drivers.cinder.volume.drivers.aws.ebs.EBSDriver volume_backend_name = ebs
Yandex:
[DEFAULT] enabled_backends = yandex [yandex] volume_driver = clouds_drivers.cinder.volume.drivers.yandex.VolumeDriver volume_backend_name = yandex
Перезапустите сервис
cinder-volume
:# Debian: systemctl restart cinder-volume.service
Установите и настройте фильтр планировщика в конфигурационном файле Cinder
/etc/cinder/cinder.conf
:[DEFAULT] scheduler_default_filters = AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter,CloudBackendsFilter
Перезапустите сервис
cinder-scheduler
:# Debian: systemctl restart cinder-scheduler.service
Подключение драйвера Glance Store¶
Функционал драйвера¶
Функционал драйвера включает в себя регистрацию образов облака в OpenStack, запуск из загруженных образов виртуальных машин, а также загрузку собственных образов в облако.
Порядок подключения драйвера Glance Store¶
Установите пакет
clouds-drivers
на управляющем узле:pip3 install clouds-drivers
Установите и настройте драйвер в конфигурационном файле Glance API -
/etc/glance/glance-api.conf
:AWS:
[DEFAULT] enabled_backends = file_store:file, http_store:http, aws_store:aws show_multiple_locations = true [aws_store] store_description = "AWS images store" bucket = "s3_bucket_name_for_image_import" [glance_store] default_backend = file_store
Yandex:
[DEFAULT] enabled_backends = file_store:file, http_store:http, yandex_store:yandex show_multiple_locations = true [glance_store] default_backend = file_store
Необходимо настроить доступ к объектному хранилищу в конфигурационном файле Glance API -
/etc/glance/glance-api.conf
:AWS:
[aws_store] store_description = "AWS images store" bucket = "s3_bucket_name_for_image_import"
Yandex:
[yandex_store] store_description = "Yandex images store" bucket = "s3_bucket_name_for_image_import" region_name = ru-central1 access_key_id = gUC7Dgk2ckZJTJ-2G7fm secret_access_key = m0BLkc8smdvqrQvuZzjxSEQoxLYkxxUxjAawcBfA
где access_key_id и secret_access_key - идентификатор и ключ статического ключа доступа к Object Storage, bucket - имя бакета для загрузки образа.
Перезапустите сервис
glance-api
:# Debian: systemctl restart glance-api.service
Подключение драйвера Neutron¶
Функционал драйвера (сети)¶
Функционал драйвера включает в себя создание и удаление сетей проекта. Сеть должна иметь CIDR не больше /16
.
Примечание
При создании сети в OpenStack в AWS создастся VPC с CIDR /16
, и в нем будет создана сеть, указанная в OpenStack с нужным CIDR.
Примечание
При создании подсети следуют выбирать пул адресов из x.x.x.4
- x.x.x.254
. Это связано с тем, что AWS резервирует IP-адреса с .1
до .3
. Подробнее здесь.
Примечание
Создание провайдерских сетей не поддерживается.
Примечание
Протокол IPv6
не поддерживается AWS VPC.
Функционал драйвера (роутеры и плавающие IP)¶
Функционал драйвера включает в себя создание и удаление роутеров и плавающих IP.
Создание роутера в OpenStack создает Internet Gateway (IG) в AWS без привязки его к какому-либо VPC. Добавление интерфейса к роутеру ассоциирует VPC с этим Internet Gateway и также добавляет ему маршрут по умолчанию 0.0.0.0/0
.
Примечание
Добавление интерфейса из другой подсети не будет работать, так как IG может быть ассоциирован только с одним VPC.
Для корректной работы Floating Ip необходимо в OpenStack вручную создать внешнюю сеть, включающую в себя весь пул внешних адресов (elastic ip), выделенных в AWS или Yandex.Cloud.
Важно
Если в облаке (AWS или Yandex.Cloud) уже имеются выделенные elastic ip, то созданная в OpenStack внешняя сеть не должна раздавать эти IP-адреса.
Порядок подключения драйвера Neutron¶
Установите пакет
clouds-drivers
на управляющем узле:pip3 install clouds-drivers
Установите и настройте драйвер в конфигурационном файле Neutron -
/etc/neutron/neutron.conf
:AWS. Замените сервисный плагин
router
наaws_router
. Укажите путьapi_extensions_path
до<драйвера clouds_drivers>\neutron\extensions
:Пример: [DEFAULT] service_plugins = aws_router,qos core_plugin = ml2 api_extensions_path = /usr/local/lib/python3.7/dist-packages/clouds_drivers/neutron/extensions/
Yandex. Замените сервисный плагин
router
наyandex_router
:Пример: [DEFAULT] service_plugins = yandex_router,qos core_plugin = ml2
Установите и настройте драйвер в конфигурационном файле
/etc/neutron/plugins/ml2/ml2_conf.ini
:AWS. Добавьте расширение
subnet_az
в список значений параметраextension_drivers
. Добавьтеaws
в начало спискаmechanism_drivers
. Настройте остальные параметры:Пример: [ml2] extension_drivers = port_security,qos,subnet_az type_drivers = local,flat tenant_network_types = local mechanism_drivers = aws,openvswitch,l2population [ml2_type_flat] flat_networks = *
Yandex. Добавьте
yandex
в начало спискаmechanism_drivers
. Настройте остальные параметры:Пример: [ml2] extension_drivers = port_security,qos type_drivers = local,flat tenant_network_types = local mechanism_drivers = yandex,openvswitch,l2population [ml2_type_flat] flat_networks = *
Перезапустите сервисы Neutron:
# Debian: systemctl restart neutron-*.service
Примечание
После настройки драйвера необходимо в проекте для работы с AWS создать новую сеть и подсеть для нее.
Таблица соответствий действий в OpenStack и AWS¶
№ | Neutron | AWS |
---|---|---|
1 | Создание сети | None |
2 | Создание сети с < /16 | Создание VPC with /16 и подсети с заданным CIDR |
3 | Создание роутера | Создание Internet Gateway |
4 | Добавление шлюза к роутеру | None |
5 | Добавление интерфейса к роутеру | Добавление VPC к Internet Gateway |
6 | Добавление плавающего IP к виртуальной машине | Добавление Elastic IP к виртуальной машине |
7 | Удаление плавающего IP | Удаление elastic IP |
8 | Удаление подсети | Удаление подсети в VPC, удаление VPC если последняя подсеть |
9 | Удаление сети | None |
10 | Удаление интерфейса роутера | Удаление VPC с Internet Gateway |
11 | Удаление роутера | Удаление Internet Gateway |
Настройка интеграции проекта с облаком AWS¶
Создайте проект для интеграции с облаком AWS:
openstack project create aws
Назначьте необходимые роли:
openstack role add --project aws --user admin admin openstack role add --project aws --user admin creator openstack role add --project aws --user cinder observer openstack role add --project aws --user glance observer openstack role add --project aws --user nova observer openstack role add --project aws --user neutron observer
Настройте проект для интеграции с облаком:
openstack aos clouds add aws --project aws --access-key "AKIAIOSFODNN7EXAMPLE" --secret-key "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" --region us-east-2 --az us-east-2a
Зарегистрируйте образы облака в Openstack:
openstack aos clouds images register --project aws --cloud-image-id ami-0f7919c33c90f5b58
Зарегистрируйте типы инстансов облака в Openstack:
openstack aos clouds flavors register --project aws
Настройка интеграции проекта с Яндекс.Облако¶
Создайте проект для интеграции с Яндекс.Облако:
openstack project create yandex
Назначьте необходимые роли:
openstack role add --project yandex --user admin admin openstack role add --project yandex --user admin creator openstack role add --project yandex --user cinder observer openstack role add --project yandex --user glance observer openstack role add --project yandex --user nova observer openstack role add --project yandex --user neutron observer
Настройте проект для интеграции с облаком:
openstack aos clouds add yandex --project yandex --service-account-id aaaaaaaaaaaaaaaaaaaa --private-key private.key --key-id bbbbbbbbbbbbbbbbbbbb --folder-id cccccccccccccccccccc --az ru-central1-a
Файл конфигурации¶
Примечание
Файл конфигурации позволяет переопределять секции и параметры общего файла aos.conf
для конкретного модуля.
Примечание
По умолчанию в файле clouds.conf.example
строки с уровнем логирования нет, она указывается при необходимости. Уровень логирования по умолчанию выставлен в общем конфигурационном файле. Подробнее ознакомиться с файлами конфигурации можно в соответствующем разделе.
Конфигурационный файл представлен в ini
формате и состоит из следующих секций и параметров:
Секция | Параметр | Описание | Значение по умолчанию |
---|---|---|---|
api | logfile | Путь до лог файла службы aos-clouds-api. | |
database | url | URL для доступа к базе данных. | mysql+pymysql://aos:p assword@localhost:330 6/clouds?charset=utf8 |
Пример конфигурационного файла¶
[database]
url = mysql+pymysql://aos:password@localhost:3306/clouds?charset=utf8
Важно
При изменении параметров файла конфигурации для вступления их в силу необходимо произвести процедуру, описанную в разделе «Обновление файла конфигурации».
План восстановления¶
В случае неудачной установки или обновления модуля Clouds выполните возврат к исходному состоянию:
Сравните версии миграций в файле
/tmp/rollback/clouds/migrations.txt
с текущими. При наличии отличий произведите миграцию на предыдущую версию. Пример миграции:openstack aos db list -n clouds openstack aos db migrate -n clouds --migration 2
Произведите возврат к предыдущему состоянию пакетов:
cd /tmp/rollback/clouds diff --changed-group-format='%>' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_uninstall.txt diff --changed-group-format='%<' --unchanged-group-format='' pip_before.txt pip_after.txt > pip_install.txt pip3 uninstall -r pip_uninstall.txt pip3 install -r pip_install.txt