Skip to content

progmaticlab/ci

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Набор скриптов для автоматического поднятия стенда

Данный набор скриптов предназначен для автоматического поднятия стенда, максимально похожего на используемый для продуктового решения. Скрипты предназначены для поднятия стенда на KVM хосте. Минимальные требования: 20 ядер, 40Гб свободной памяти, 200Гб дискового пространства. Для сетевого решения используется схема DVR HA. Версия Стенд состоит из машин:

  • один контроллер. Все сервисы контроллеров OpenStack: ntp, rabbitmq-server, percona-cluster, openstack-dashboard, glance, keystone, nova-cloud-controller, cinder, neutron-api + neutron-dynamic-routing-plugin, dynamic-routing-agent. Здесь же установлен bird, для эмуляции внешнего роутера.
  • два гипервизора. Сервисы nova-compute, openvswitch.
  • три нетворк ноды. Сервисы l3-agent компонента neutron, openvswitch, neutron-router-helper. Для cinder сервиса, в процессе установки, выделяется диск размером 25Gb.

Подготовка KVM хоста

На хосте должен быть устанвлен пакет для работы Juju (https://jujucharms.com/docs/stable/reference-install)

sudo add-apt-repository -yu ppa:juju/stable
sudo apt install juju

Хост должен быть подготовлен для выполения команд утилиты virsh, для того пользователя (USER в блоке ниже), под логином которого, будут выполняться скрипты:

sudo apt-get install -y git qemu-kvm iptables-persistent ufw virtinst uuid-runtime qemu libvirt-bin
sudo usermod -aG libvirtd USER

Хост может быть установлен с помощью любого дистрибутива Linux, где возможна работа KVM и Juju. (Для проверки был использован хост с Ubuntu 17.04) Для всех машин стенда используется образ ubuntu 16.04. Набор команд, который подготавливает нужный образ, расположен в файле juju/prepare-image.sh. Достаточно один раз выполнить эти команды и в дальнейшем, скрипты поднятия стенда будут всегда использовать этот образю Так же, на хосте, в директории $HOME/files пользователя, должны лежать архивы neutron-dynamic-routing.tgz и neutron-router-helper.tgz, внутри которых должны быть каталоги neutron-dynamic-routing и neutron-router-helper-master соответственно. Эти архивы будут использованы в процессе настройки стенда, для обеспечения совместимости с продуктовым решением. А также файлы s3.py (для cinder-backup), и forms.py (для openstack-dashboard) - они будут использованы для реализации функциональности S3 backup.

Подготовка/удаление виртуального окружения для стенда

Подготовка виртуального окружения (машины, сеть, ...) достигается вызовом скрипта create_env.sh. Создает нужное количество машин/сетей для стенда. Не требует специальных параметров для запуска. В начале скрипта присутствуют параметры подготовленнго ранее образа: image_user, base_image. Если образ был подготовлен с помощтю указанного выше набора команд, то менять не требуется. Параметры вирутальных машин определены в начале файла juju/functions, при необходимости можно откорректировать настройки сети, найстройки машин по памяти, кол-ву ядер и т.п. Удаление всех объектов делается скриптом clean_env.sh

Установка OpenStack

Делается вызовом скрипта juju/deploy_services.sh. Скрипт установит на соответствующий машины необходимые сервисы, настроит их и дождется их работоспособности.

Создание минимальной настройки объектов OpenStack

Запуск скрипта juju/configure_openstack.sh приведет к созданию необходимого, для тестов, количества объектов. Будет загружен cirros imaage; созданы флейвор, проект, пользователь, внешняя сеть, две внутренние сети, роутер, объекты необходмые для bgp, настроена security group.

Запуск тестов

Скрипт juju/check_openstack.sh выполнит тестирование полученного облака. Данный скрипт запустит по две виртуальных машины в каждом из двух проектов и затем запустит тесты.

Описание тестов

Тест 1: С одной из машин тестируется доступность других (ping). Тест по ssh зайдет на машину и выполнит пинг других машин.

Тест 2: С каждой машины тестируется доступность внешнего мира (ping to external router). Тест по ssh зайдет на машину и выполнит пинг роутера. Т.к. роутер имеет только адрес сети, которая никак не относится к сетям OpenStack, то это аналогично проверке доступности внешнего мира.

Тест 3: С одной из машин тестируется доступность внешнего мира, при выключении/включении мастер L3 агента. Тест определяет мастер агента, выключает его. Затем проверяет что пинг внешнего мира идет некоторое время, затем пропадает, затем снова появляется. После чего агент снова включается. Тест проводит пять таких тераций.

Сбор лог файлов

Запуск файла juju/save_logs.sh приведет к сбору логов со всех машин.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published