Подготовка окружения

Итак, поскольку наша замечательная облачная платформа является комплексным наслоением одной питонятины на другую - перед установкой и настройкой основных компонентов нам потребуется установить и настроить более тривиальные запчасти.

И ещё один шаг, который нам предстоит пройти перед даже настройкой окружения - это решение архитектурных вопросов нашего будущего облака. Будет ли нужен нам HA, захотим ли мы делать failover для менеджмент-нод, будет ли у нас сеть выходить напрямую с гипервизоров или мы будем использовать network-ноды для отправки траффика из облака и многие, многие другие.

В данном сетапе я возьму, пожалуй самую простейшую архитектуру: 1 менеджмент нода + 2 compute ноды, а так же распределённую хранилку на базе CEPH1)

Карта сети выглядит примерно вот так:

Между всеми хостами будет поднята mesh-сеть на основе tinc, дабы обеспечить изоляцию от других сервисов и удобство конфигурирования.

За БД, которую будем использовать для OpenStack я некоторое время размышлял, но, как гласит старая народная мудрость, Маша2) это Маша, а два раза это два раза, поэтому в конечном итоге я пришёл к выводу, что буду использовать PostgreSQL.

Так же нам понадобится брокер сообщений, которым конечно же выступит незабвенный RabbitMQ3)

Поскольку мы будем использовать подо всем этим Centos, то первым делом, как и в большинстве руководств по использованию этой системы, отключаем SELinux. Делается это достаточно просто - в файлике /etc/selinux/config меняем enforced на disabled и перезагружаемся.

Перед стартом

Если openstack корячится руками - можно использовать удобную табличку с паролями:

Пароль для БДDATABASE_PASSWORD
Пароль админа OSADMIN_PASS
Пароль БД для CinderCINDER_DBPASS
Пароль для сервиса CinderCINDER_PASS
Пароль БД для BashBoardDASH_DBPASS
Пароль пользователя demoDEMO_PASS
Пароль БД для GlanceGLANCE_DBPASS
Пароль для сервиса GlanceGLANCE_PASS
Пароль БД для KeystoneKEYSTONE_DBPASS
Секретный ключ для сервиса метадатыMETADATA_SECRET
Пароль БД для NeutronNEUTRON_DBPASS
Пароль для сервиса NeutronNEUTRON_PASS
Пароль БД для NovaNOVA_DBPASS
Пароль для сервиса NovaNOVA_PASS
Пароль для сервиса PlcaementPLACEMENT_PASS
Пароль для пользователя openstack в RabbitMQRABBIT_PASS

БД

Итак, postgresql в centos устанавливается не то, чтобы очевидно и невероятно, но для люителей цемента сложностей вызвать на должно. Для всех остальных же

# yum install postgresql-server postgresql-contrib
# postgresql-setup initdb

А ещё нам понадобится поставить запчасти пихона, иначе чуда не произойдёт.

# yum install python-psycopg2

Сервер очередей

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

# yum install rabbitmq-server

Ну и после запуска делаем пользователя для openstack

# rabbitmqctl add_user openstack RABBIT_PASS
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Memcached

Ну тут всё тривиально

# yum install memcached python-memcached

CEPH

Вот тут отдельная статья

И в приципе мы готовы к наливке запчастей OpenStack

1)
попробуем сделать три OSD'шки по 250 гигов - одну в Гермашке на HDD, одну в Хельсинках на HDD и одну дома на SSD. Mon-нода будет жить на OSD в Гермашке
2)
mariadb
3)
как же я натрахался с ним в своё время, особенно когда он начал терять сообщения и neutron начал рандомно флапать портами, то ещё веселье