Подготовка окружения
Для начала необходимо подготовить несколько серверов, которые будут выполнять роли контроллера и вычислительных нод. Минимальная конфигурация включает один контроллер (2 CPU, 4 ГБ RAM, 50 ГБ SSD) и одну вычислительную ноду с аналогными параметрами. Операционная система — Ubuntu 22.04 LTS (или совместимый дистрибутив Debian‑based). На всех узлах следует отключить автоматическое обновление пакетов, чтобы избежать конфликтов во время установки.
Установка зависимостей
На каждом узле выполняем базовую подготовку:
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-pip python3-venv git curl
Создаём изолированное окружение Python, в котором будет работать kolla‑ansible:
python3 -m venv ~/kolla-venv
source ~/kolla-venv/bin/activate
pip install --upgrade pip
pip install ansible==8.5.0
pip install kolla-ansible
После установки проверяем версии:
ansible --version
kolla-ansible --version
Конфигурация сети
OpenStack использует несколько сетевых диапазонов:
| Тип сети | Диапазон (пример) |
|---|---|
| Управляющая (management) | 10.0.0.0/24 |
| Тенантская (project) | 192.168.0.0/24 |
| Внешняя (public) | 172.16.0.0/24 |
На каждом сервере задаём статический IP‑адрес из управляющего диапазона. Пример настройки на Ubuntu через netplan:
network:
version: 2
ethernets:
ens3:
addresses:
- 10.0.0.11/24 # контроллер
gateway4: 10.0.0.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
После изменения файла запускаем sudo netplan apply и проверяем:
ip addr show ens3
ping -c 3 10.0.0.12 # проверка связи с вычислительной нодой
Подготовка каталогов и переменных
На контроллере создаём директорию проекта:
mkdir -p ~/openstack/kolla
cd ~/openstack/kolla
kolla-ansible init-runonce
Скопируем шаблоны конфигурации:
cp -r /usr/local/share/kolla-ansible/etc/kolla .
cp -r /usr/local/share/kolla-ansible/ansible .
Файл globals.yml содержит основные параметры кластера. В нём указываем:
kolla_base_distro: "ubuntu"
kolla_install_type: "binary"
network_interface: "ens3"
neutron_external_interface: "ens3"
enable_horizon: "yes"
enable_swift: "no"
Для упрощения деплоя отключаем SELinux (не требуется в Ubuntu) и включаем docker в качестве контейнерного движка. В passwords.yml генерируем случайные пароли:
kolla-genpwd
Развёртывание компонентов
Сначала проверяем инвентори‑файл inventory/hosts. Пример содержания:
[control]
controller ansible_host=10.0.0.11 ansible_user=ubuntu
[compute]
compute01 ansible_host=10.0.0.12 ansible_user=ubuntu
[network]
controller ansible_host=10.0.0.11 ansible_user=ubuntu
После подтверждения корректности запускаем последовательность playbook‑ов:
# Подготовка узлов
kolla-ansible -i inventory/hosts bootstrap-servers
# Установка базовых компонентов (MySQL, RabbitMQ, Memcached)
kolla-ansible -i inventory/hosts prechecks
kolla-ansible -i inventory/hosts deploy
В процессе выполнения Ansible скачивает необходимые Docker‑образы из официального репозитория Kolla, разворачивает их и связывает через Docker‑network. По окончании появляется сообщение о завершении деплоя.
Проверка работоспособности
После успешного развертывания основные сервисы доступны через API и веб‑интерфейс. Проверяем статус контейнеров:
docker ps --filter name=keystone
docker ps --filter name=nova
docker ps --filter name=neutron
Для быстрой диагностики используем встроенный скрипт:
kolla-ansible -i inventory/hosts post-deploy
Он создаёт файл admin-openrc.sh в домашней директории контроллера. Подключаем переменные окружения:
source /home/ubuntu/admin-openrc.sh
openstack token issue
Если токен получен без ошибок, сервисы аутентификации работают корректно.
Доступ к Horizon
Веб‑панель Horizon автоматически развёрнута на порту 80 (или 443 при включённом TLS). Открываем в браузере:
http://10.0.0.11/
В качестве логина используем admin, пароль берётся из passwords.yml (переменная keystone_admin_password). После входа наблюдаем дашборд со сводкой ресурсов: запущенные виртуальные машины, сети, хранилище Cinder и другие сервисы.
Для создания первой виртуальной машины:
openstack server create \
--flavor m1.tiny \
--image cirros \
--nic net-id=$(openstack network list -f value -c ID) \
test-vm
Команда запускает инстанс на вычислительной ноде, автоматически назначая IP‑адрес из тенантской сети. В Horizon появится запись о новой VM, её статус перейдёт в ACTIVE после завершения процесса boot.
Итоги развертывания
Развёртывание OpenStack через kolla‑ansible позволяет собрать полностью контейнеризованный облачный стек за один‑два часа, используя знакомый набор Ansible‑playbook‑ов. Ключевые преимущества подхода:
- Изоляция сервисов в Docker‑контейнерах упрощает обновления и откат.
- Конфигурация в виде YAML делает процесс повторяемым и версионируемым.
- Поддержка большинства OpenStack‑компонентов (Keystone, Nova, Neutron, Glance, Cinder, Horizon) из коробки.
После базовой установки система готова к расширению: добавление новых нод, настройка HA‑пулов, интеграция с Ceph или OVN, а также включение дополнительных сервисов, таких как Heat или Barbican. Всё это можно выполнить, просто изменив параметры в globals.yml и запустив соответствующие playbook‑ы. Таким образом, kolla‑ansible предоставляет гибкую и масштабируемую основу для создания собственного «Self‑Hosted AWS».