Руководство по установке и запуску OpenStack в ALT Linux и производных
Этот участник состоит в ALT Linux Team под ником pauli.
e-mail: pauli@altlinux.org |
Более подробная статья по установке OpenStack на P8: Руководство_по_установке_и_запуску_OpenStack_в_ALT_Linux_в_p8
Статья по мотивам материала OpenStack. Инструкция по применению. В отличие от первоисточника, охватывающего множество дистрибутивов (что правильно), здесь мы постараемся дать пошаговое руководство по установке и первоначальной настройке компонентов OpenStack конкретно для семейства ALT Linux и производных. Предполагается, что все примеры команд, приведенные ниже, проверены и должны работать.
Предварительные условия
До начала требуется работоспособная базовая система на основе p8. Контейнеру достаточно минимальных ресурсов:
- Процессорных ядер - одно;
- Оперативная память от 512 Мб;
- Диск 20 Гб.
Для демонстрации удобно использовать виртуальную машину VirtualBox, образ дистрибутива - basealt-p8-server-openstack-*-x86_64. Имя виртуальной машины controller. Виртуальные сетевые интерфейсы конфигурируются следующим образом:
- Адаптер 1 тип подключения внутренняя сеть `intnet`
- Адаптер 2 тип подключения NAT, проброс портов хоста 2211 на 22 (ssh) гостя.
По умолчанию при минимальной установке sshd установлен, но автоматически не запускается. Он нам понадобится, чтобы стало возможным пользоваться буфером обмена для команд.
# systemctl enable sshd # systemctl start sshd
Дальнейшую настройку удобнее вести, подключившись к машине controller по ssh через 2211 порт хоста. /etc/hosts каждой из виртуальных машин, участвующих в тесте, для разрешения имён дополним параметрами:
# Управляющий узел 10.0.0.11 controller # Сетевой узел 10.0.0.21 network # Вычислительный узел 10.0.0.31 compute1
Подготовка к началу установки.
# apt-get update # apt-get dist-upgrade
Установка СУБД
# apt-get install mariadb-server python-module-MySQLdb
Настройка СУБД. Файл конфигурации
# > /etc/my.cnf.d/mariadb_openstack.cnf
с параметрами
[mysqld] bind-address = 10.0.0.11 default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8 innodb_buffer_pool_size = 1G innodb_log_file_size = 256M innodb_log_buffer_size = 32M max_allowed_packet = 32M
# systemctl start mysqld # systemctl enable mysqld # systemctl status mysqld
... Active: active (running) ... Задаём пароль SQL root и настройки безопасности
# mysql_secure_installation
Сервер сообщений
# apt-get install rabbitmq-server # systemctl start rabbitmq # systemctl enable rabbitmq # systemctl status rabbitmq
... Active: active (running) ... Пользователь openstack в брокере сообщений и его полномочия:
# rabbitmqctl add_user openstack RABBIT_PASS # rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Cлужба идентификации Keystone
Создание базы данных
mysql -u root -p > CREATE DATABASE keystone; > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
Установка и настройка компонентов
# apt-get install openstack-keystone apache2-mod_wsgi python-module-keystoneclient python-module-openstackclient memcached python-module-memcached
Сохраняем умолчальный .conf для справки и создаём новый
# mv /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak # touch /etc/keystone/keystone.conf
С параметрами
[DEFAULT] admin_token = TOKEN_ID [database] connection = mysql://keystone:KEYSTONE_DBPASS@DB_ADDRESS/keystone [token] provider = keystone.token.providers.uuid.Provider driver = keystone.token.persistence.backends.memcache.Token [memcache] servers = controller:11211 verbose = True
Где вместо TOKEN_ID подставить случайный ключ - например выдачу команды
openssl rand -hex 10
Чтобы получилось что-то вроде admin_token = edb0ef20598523698185, а DB_ADDRESS - controller или localhost. Теперь можно заполнить базу данных начальными таблицами для Keystone:
keystone-manage db_sync
Подготовка веб-сервера Apache2 для Keystone
Параметр ServerName controller в /etc/httpd2/conf/httpd2.conf, затем отдельный файл конфигурации
# echo ServerName controller >> /etc/httpd2/conf/httpd2.conf # touch /etc/httpd2/conf/sites-available/wsgi-keystone.conf
с параметрами
Listen 5000 Listen 35357 <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /var/www/cgi-bin/keystone/main WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLog /var/log/httpd2/keystone-error.log CustomLog /var/log/httpd2/keystone-access.log combined </VirtualHost> <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /var/www/cgi-bin/keystone/admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLog /var/log/httpd2/keystone-error.log CustomLog /var/log/httpd2/keystone-access.log combined </VirtualHost>
и символическую ссылку на wsgi-keystone.conf из /etc/httpd2/conf/sites-enabled
# ln -s /etc/httpd2/conf/sites-available/wsgi-keystone.conf /etc/httpd2/conf/sites-enabled
# mkdir -p /var/www/cgi-bin/keystone # curl http://git.openstack.org/cgit/openstack/keystone/plain/httpd/keystone.py?h=stable/kilo \ | tee /var/www/cgi-bin/keystone/main /var/www/cgi-bin/keystone/admin # chown -R keystone:keystone /var/www/cgi-bin/keystone # chmod 755 /var/www/cgi-bin/keystone/* # systemctl enable memcached # systemctl restart memcached # a2dissite default # systemctl enable httpd2 # systemctl restart httpd2
Добавление объектов в службу идентификации
export OS_TOKEN=TOKEN_ID export OS_URL=http://controller:35357/v2.0