Руководство по установке и запуску OpenStack в ALT Linux и производных

Материал из ALT Linux Wiki
(перенаправлено с «OpenStack»)
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Alt linux team.png Этот участник состоит в 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