Home » Установка OpenStack DevStack на Ubuntu
Установка OpenStack DevStack на Ubuntu

Установка OpenStack DevStack на Ubuntu

Что может быть круче для админа или разработчика, чем разворачивание собственного облака прямо у себя на сервере? OpenStack DevStack — это простейший способ поднять тестовую среду OpenStack и окунуться в мир управления виртуальными машинами, сетями и хранилищами. Если вы когда-нибудь хотели потрогать облачную инфраструктуру руками, но не знали с чего начать, эта статья — именно то, что доктор прописал. Мы разберем весь процесс установки от А до Я, рассмотрим подводные камни и поделимся лайфхаками, которые сэкономят вам время и нервы.

Что такое OpenStack DevStack и зачем он нужен

DevStack — это набор bash-скриптов, который автоматизирует установку OpenStack для разработки и тестирования. Это не production-ready решение, но идеальный инструмент для изучения, экспериментов и быстрого прототипирования. Думайте о нем как о Docker Compose для OpenStack — быстро, удобно, но только для dev-окружения.

OpenStack сам по себе — это монстр из десятков сервисов: Nova (compute), Neutron (networking), Cinder (block storage), Glance (images), Keystone (identity), Swift (object storage) и еще куча компонентов. DevStack берет всю эту сложность и упаковывает в простой процесс установки.

Системные требования и подготовка сервера

Прежде чем начать, давайте определимся с железом. DevStack — довольно прожорливая штука, особенно если планируете запускать несколько VM внутри.

Минимальные требования:

  • Ubuntu 20.04 LTS или 22.04 LTS (желательно свежая)
  • 4 GB RAM (лучше 8 GB)
  • 2 CPU cores (лучше 4)
  • 40 GB свободного места на диске
  • Стабильный интернет

Рекомендуемая конфигурация:

  • 8+ GB RAM
  • 4+ CPU cores
  • 100+ GB SSD

Для тестирования идеально подойдет VPS или выделенный сервер с подходящими характеристиками.

Пошаговая установка DevStack

Шаг 1: Подготовка системы

Первым делом обновляем систему и устанавливаем необходимые пакеты:

sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-pip python3-dev python3-venv
sudo apt install -y build-essential libssl-dev libffi-dev

Шаг 2: Создание пользователя stack

OpenStack DevStack требует запуска под non-root пользователем. Создаем специального пользователя:

sudo adduser --disabled-password --gecos "" stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo su - stack

Шаг 3: Клонирование DevStack

Теперь, работая под пользователем stack, клонируем репозиторий DevStack:

git clone https://opendev.org/openstack/devstack
cd devstack

Шаг 4: Создание конфигурационного файла

DevStack использует файл local.conf для настройки. Создаем базовую конфигурацию:

cat > local.conf << EOF
[[local|localrc]]
ADMIN_PASSWORD=secretpassword
DATABASE_PASSWORD=secretpassword
RABBIT_PASSWORD=secretpassword
SERVICE_PASSWORD=secretpassword

# Включаем основные сервисы
ENABLED_SERVICES=rabbit,mysql,key

# Nova
ENABLED_SERVICES+=,n-api,n-cpu,n-cond,n-sch,n-novnc

# Glance
ENABLED_SERVICES+=,g-api,g-reg

# Neutron
ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta

# Cinder
ENABLED_SERVICES+=,c-api,c-vol,c-sch

# Horizon
ENABLED_SERVICES+=,horizon

# Heat (опционально)
ENABLED_SERVICES+=,h-eng,h-api,h-api-cfn,h-api-cw

# Логирование
LOGFILE=$DEST/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
SCREEN_LOGDIR=$DEST/logs

# Настройки сети
HOST_IP=YOUR_SERVER_IP
FLOATING_RANGE=192.168.1.224/27
FIXED_RANGE=10.11.12.0/24
FIXED_NETWORK_SIZE=256
FLAT_INTERFACE=eth0
EOF

Замените YOUR_SERVER_IP на реальный IP вашего сервера.

Шаг 5: Запуск установки

Теперь магия — запускаем установку:

./stack.sh

Процесс займет от 15 до 60 минут в зависимости от скорости интернета и железа. Идите пить кофе, скрипт все сделает сам.

Настройка и первичная конфигурация

После успешной установки вы увидите что-то вроде:

=========================
DevStack Component Timing
=========================
Total runtime         2143

Horizon is now available at http://YOUR_SERVER_IP/dashboard
Keystone is serving at http://YOUR_SERVER_IP/identity/
The default users are: admin and demo
The password: secretpassword

Теперь можно зайти в веб-интерфейс Horizon по адресу http://YOUR_SERVER_IP/dashboard с логином admin и паролем, который вы указали в local.conf.

Полезные команды для работы с DevStack

Источник переменных окружения:

source ~/devstack/openrc admin admin

Основные команды OpenStack CLI:

# Список сервисов
openstack service list

# Список образов
openstack image list

# Создание сети
openstack network create --external --provider-physical-network public --provider-network-type flat public

# Создание подсети
openstack subnet create --network public --allocation-pool start=192.168.1.230,end=192.168.1.240 --dns-nameserver 8.8.8.8 --gateway 192.168.1.1 --subnet-range 192.168.1.0/24 public-subnet

# Список flavor'ов
openstack flavor list

# Создание виртуальной машины
openstack server create --flavor m1.small --image cirros-0.5.2-x86_64-disk --network private myvm

Типичные проблемы и их решения

Проблема Симптом Решение
Недостаток RAM Сервисы падают, OOM killer Отключить ненужные сервисы в local.conf
Проблемы с сетью VM не получают IP Проверить FLAT_INTERFACE в конфиге
Медленная установка Зависает на pip install Использовать локальный pip mirror
Ошибки прав доступа Permission denied Проверить sudoers для пользователя stack

Расширенная конфигурация

Для более серьезных экспериментов можно добавить в local.conf:

# Включение Ceilometer для мониторинга
enable_plugin ceilometer https://opendev.org/openstack/ceilometer

# Включение Magnum для контейнеров
enable_plugin magnum https://opendev.org/openstack/magnum

# Включение Octavia для load balancing
enable_plugin octavia https://opendev.org/openstack/octavia

# Включение Barbican для управления секретами
enable_plugin barbican https://opendev.org/openstack/barbican

Автоматизация и скрипты

Для автоматизации развертывания можно создать скрипт:

#!/bin/bash
# Скрипт автоматической установки DevStack

# Проверка пользователя
if [ "$EUID" -eq 0 ]; then
  echo "Не запускайте под root!"
  exit 1
fi

# Проверка наличия конфига
if [ ! -f "local.conf" ]; then
  echo "Создайте local.conf файл"
  exit 1
fi

# Очистка предыдущей установки
if [ -f "unstack.sh" ]; then
  ./unstack.sh
fi

if [ -f "clean.sh" ]; then
  ./clean.sh
fi

# Запуск установки
./stack.sh

# Проверка успешности
if [ $? -eq 0 ]; then
  echo "DevStack успешно установлен!"
  echo "Horizon: http://$(hostname -I | awk '{print $1}')/dashboard"
else
  echo "Установка завершилась с ошибкой"
  exit 1
fi

Мониторинг и отладка

DevStack создает множество screen сессий для каждого сервиса. Для мониторинга:

# Список активных screen сессий
screen -ls

# Подключение к конкретному сервису
screen -r stack

# Просмотр логов
tail -f /opt/stack/logs/stack.sh.log
tail -f /opt/stack/logs/n-api.log

Сравнение с альтернативами

Решение Сложность Время установки Подходит для
DevStack Низкая 30-60 мин Разработка, тестирование
Kolla-Ansible Средняя 1-2 часа Production, развертывание
MicroStack Очень низкая 15-30 мин Быстрые тесты
RDO PackStack Средняя 45-90 мин CentOS/RHEL среды

Полезные ссылки

Заключение и рекомендации

OpenStack DevStack — отличный инструмент для изучения облачных технологий и быстрого прототипирования. Он позволяет за полчаса поднять полноценную облачную среду и начать эксперименты с виртуальными машинами, сетями и хранилищами.

Используйте DevStack для:

  • Изучения OpenStack и облачных технологий
  • Разработки и тестирования приложений
  • Создания proof-of-concept решений
  • Подготовки к сертификации OpenStack

Не используйте DevStack для:

  • Production окружений
  • Долгосрочных инсталляций
  • Критически важных данных

Помните, что DevStack — это инструмент для разработчиков, а не production-ready решение. Для серьезных проектов рассмотрите Kolla-Ansible или коммерческие дистрибутивы OpenStack.

Удачи в изучении OpenStack! Пробуйте, экспериментируйте и не бойтесь ломать — в этом и заключается вся прелесть DevStack.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked