среда, 29 мая 2013 г.

Виртуализация. Развёртывание OpenStack + Heat

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

К нашему счастью, уже есть готовая статья по настройке этого решения на Ubuntu 12.04, вот она.
О чём умолчали авторы этого руководства - вам точно потребуется проверить файл /etc/hosts, в нём необходимо добавить имя машины в строчку '127.0.0.1       localhost', в конечном итоге должно получиться что-то такое: '127.0.0.1       localhost  ss1283'.
Иначе "кролик" не сможет стартовать и всё сломается).
Вообще, это серьёзная проблема всех сложных систем, когда есть множество зависимых друг от друга компонентов. Стоит сломаться одному компоненту (или, например, кто-то его неправильно настроил) - и нормальная работа всей системы парализована.

(спойлер: о чём ещё умолчали авторы и как всем этим управлять)


Ещё авторы статьи умолчали о том, что вам необходимо иметь заранее заданные переменные окружения. Чтобы их настроить, надо создать файл creds и прописать в него следующее (естественно, поменяв значения переменных на желаемые):

export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin_pass
export OS_AUTH_URL="http://192.168.100.51:5000/v2.0/"

После этого применяем эти переменные к своему окружению командой 'source creds'.
Вот теперь запускаем скрипт для установки системы :)

Пока ставится OpenStack, я пишу эту статью. Удобно иметь готовый скрипт, который позволяет развернуть все необходимые компоненты одной командой.

Если скрипт закончил установку, и вы видите малопонятные сообщения об ошибках - всё отлично, вы установили OpenStack, надо теперь его настроить )
Продолжайте выполнять шаги, описанные в руководстве - и всё должно заработать (у меня один раз получилось ;) ).

Если не заработало (по какой-то причине), то есть другое руководство, более подробное, о том, как разворачивать OpenStack.

На практике самым простым способом развернуть OpenStack является использование проекта DevStack, хотя и тут надо "подготовиться", вооружившись вспомогательной документацией.
Инструкция, на самом деле, достаточно проста.
Выполняем от имени root:

apt-get install -y git sudo
groupadd stack
useradd -g stack -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
su - stack
sudo apt-get update
sudo apt-get install -qqy git
sudo apt-get install pm-utils
git clone https://github.com/openstack-dev/devstack.git
cd devstack
echo ADMIN_PASSWORD=swordfish > localrc
echo MYSQL_PASSWORD=swordfish >> localrc
echo RABBIT_PASSWORD=swordfish >> localrc
echo SERVICE_PASSWORD=swordfish >> localrc
echo SERVICE_TOKEN=tokentoken >> localrc
echo "ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng" >> localrc
./stack.sh



И ждём надписи, которая известит о том, что всё настроено:
 
Horizon is now available at http://67.207.197.36/
Keystone is serving at http://67.207.197.36:5000/v2.0/
Examples on using novaclient command line is in exercise.sh
The default users are: admin and demo
The password: super-secret
This is your host ip: 67.207.197.36
stack.sh completed in 277 seconds.


Как видите, на моем сервере (с хорошим подключением к Интернету) установка занимает примерно 5 минут.
Работает через раз, но на чистой Ubuntu 12.04 & 12.10 ставится без проблем и работает (до первой перезагрузки сервера :) )
Так же "в коробке" есть скрипты для очистки следов после установки, что помогает "убрать всё лишнее" и попробовать установить ещё раз.