- Home »

Установка 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.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.