Установка Ansible AWX с Docker на CentOS 8

AWX (Ansible Web eXecutable) — свободный проект с веб-интерфейсом и REST API поверх Ansible. Он упрощает управление инвентарями, заданиями и доступом (включая интеграцию с LDAP). Эта инструкция показывает установку AWX в контейнерах Docker на CentOS 8.
Важно: инструкция ориентирована на установку в контейнерах Docker на одном сервере. Для продакшена стоит рассмотреть AWX Operator (Kubernetes) или официальные рекомендации по высокодоступному развёртыванию.
Ключевые понятия (1‑строчные определения)
- AWX: веб‑оболочка для Ansible с задачником и API.
- Inventory: список хостов/групп для Ansible.
- Playbook: сценарий задач Ansible.
Требования
- Сервер с CentOS 8 и минимум 4 ГБ ОЗУ (рекомендуется 8 ГБ для стабильной работы).
- Доступ root (пароль или sudo).
Факты в одном блоке
- Минимальная RAM: 4 ГБ (рекомендуется 8 ГБ).
- Важные порты: 80/443 (AWX веб), 5432 (Postgres), 5672/15672 (RabbitMQ).
- Хранилище: каталог для postgres в /var/lib/pgdocker.
Шаг 1 — Подготовка системы
Установите репозиторий EPEL и необходимые пакеты:
dnf install epel-release -ydnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -yПосле установки пакетов переходите к установке Docker.
Шаг 2 — Установка Docker и Docker Compose
Добавьте официальный репозиторий Docker:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoУстановите рекомендованную в исходной инструкции версию Docker:
dnf install docker-ce-3:18.09.1-3.el7 -yПроверьте версию:
docker --versionОжидаемый вывод (пример):
Docker version 19.03.7, build 7141c199a2Запустите и включите сервис Docker:
systemctl start docker
systemctl enable dockerПроверьте статус:
systemctl status dockerЗатем установите Docker Compose через pip3:
pip3 install docker-composeПроверьте версию:
docker-compose --versionУстановите системный python по умолчанию на python3 (команда из исходного руководства):
alternatives --set python /usr/bin/python3Примечание: версия Docker и метод установки могут отличаться в актуальных репозиториях. В продакшене стоит использовать поддерживаемые сборки и проверять совместимость с CentOS 8.
Шаг 3 — Скачивание AWX и подготовка инвентаря
Склонируйте репозиторий AWX:
git clone https://github.com/ansible/awx.gitСгенерируйте секретный ключ для inventory (используется как SECRET_KEY):
openssl rand -base64 30Пример вывода (ваш ключ будет другим):
R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgpПерейдите в каталог установщика и отредактируйте inventory:
cd awx/installer/
nano inventoryПример блока настроек (сохраните свой SECRET_KEY):
[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir="/var/lib/pgdocker"
host_port=80
host_port_ssl=443
docker_compose_dir="~/.awx/awxcompose"
pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432
pg_admin_password=password
rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster
admin_user=admin
admin_password=password
create_preload_data=True
secret_key=R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
awx_official=true
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
project_data_dir=/var/lib/awx/projectsImportant: замените admin_password и другие пароли на надёжные значения перед развёртыванием в рабочей среде.
Создайте каталог для данных Postgres:
mkdir /var/lib/pgdockerШаг 4 — Установка AWX (Ansible Playbook)
Запустите playbook установки:
ansible-playbook -i inventory install.ymlПри успешной установке вы увидите вывод с задачами и итоговым PLAY RECAP, где failed=0.
Пример сокращённого вывода (обрезано):
PLAY RECAP ************************************************************************************************************************************
localhost : ok=14 changed=6 unreachable=0 failed=0 skipped=95 rescued=0 ignored=0Затем проверьте, что контейнеры запущены:
docker psОжидаемый список контейнеров (пример):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b91575d64b1 ansible/awx_task:9.2.0 "/tini -- /bin/sh -c…" About a minute ago Up About a minute 8052/tcp awx_task
9827b9831fa5 ansible/awx_web:9.2.0 "/tini -- /bin/sh -c…" About a minute ago Up About a minute 0.0.0.0:80->8052/tcp awx_web
47300ec1c26f postgres:10 "docker-entrypoint.s…" About a minute ago Up About a minute 5432/tcp awx_postgres
166b153faa27 ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" About a minute ago Up 58 seconds 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp awx_rabbitmq
0f36c9784f74 memcached:alpine "docker-entrypoint.s…" About a minute ago Up About a minute 11211/tcp awx_memcachedШаг 5 — SELinux и брандмауэр
Исходная инструкция рекомендует отключать SELinux в CentOS 8 редактированием /etc/sysconfig/selinux:
nano /etc/sysconfig/selinuxНайдите строку:
SELINUX=enforcingи замените на:
SELINUX=disabledЗатем перезагрузите систему.
Note: отключение SELinux снижает уровень безопасности. Альтернатива — установить в режим permissive (SELINUX=permissive) или настроить SELinux политики для контейнеров. Для продакшна рекомендую сначала протестировать permissive и только при необходимости отключать полностью.
Откройте HTTP/HTTPS в firewalld и включите masquerade (как в оригинале):
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadШаг 6 — Доступ к веб‑интерфейсу AWX
Перейдите в браузере по адресу http://your-server-ip и авторизуйтесь под admin_user/admin_password, которые вы указали в inventory.


После входа вы увидите стандартную панель управления AWX.
Что делать, если что‑то пошло не так — устранение неполадок
- Контейнеры не запускаются: проверьте логи контейнера (docker logs
) и убедитесь, что каталоги с данными доступны и права корректны. - Проблемы с портами: убедитесь, что хост-порт (host_port) свободен и firewall не блокирует доступ.
- Ошибки инициализации БД: проверьте /var/lib/pgdocker и права владельца (uid/gid).
- SELinux блокирует доступ: временно установите SELinux в permissive и посмотрите audit-логи (ausearch, journalctl).
Базовый чеклист для логов и прав:
- docker ps — контейнеры запущены
- docker logs awx_web — логи веба
- ls -ld /var/lib/pgdocker /var/lib/awx — права и владелец
- systemctl status docker, firewall-cmd –list-all
Альтернативные подходы
- AWX Operator на Kubernetes: предпочтительно для production и HA.
- Развёртывание на виртуальных машинах без контейнеров — менее типичный сценарий.
- Официальные образы AWX в Docker Swarm/K8s — смотрите документацию проекта AWX.
Модель архитектуры (упрощённо)
- awx_web — фронтенд и API.
- awx_task — выполнение задач (воркеры).
- awx_postgres — база данных.
- awx_rabbitmq — очередь сообщений между компонентами.
- memcached — кэш для быстрого доступа.
Рекомендации по безопасности
- Обязательно смените дефолтные пароли (Postgres, RabbitMQ, admin).
- Для продакшна рассмотрите защиту HTTPS через обратный прокси (nginx/HAProxy) с сертификатами от Let’s Encrypt.
- По возможности не отключайте SELinux полностью — настройте и протестируйте политики.
Критерии приёмки
- Веб‑интерфейс доступен по HTTP/HTTPS и отображает дашборд.
- Задачи запускаются успешно (создайте тестовый Job Template и запустите).
- Все критичные контейнеры находятся в статусе Up и без ошибок в логах.
- Бэкап каталога /var/lib/pgdocker настроен (регулярные дампы БД).
Ролевые чек‑листы
Для администратора:
- Обновить пароли в inventory.
- Настроить бэкап БД и конфигураций.
- Контролировать доступ (LDAP/SSO) и права пользователей.
Для DevOps инженера:
- Проверить интеграцию с Git/инвентарями.
- Настроить Job Templates и тестовые playbook’и.
- Мониторить ресурсы контейнеров и логи.
Короткое руководство по откату (rollback)
- Остановите контейнеры: docker-compose -f ~/.awx/awxcompose/docker-compose.yml down
- Восстановите бэкап БД (pg_dump/pg_restore).
- Перезапустите контейнеры и проверьте целостность данных.
Краткое объявление (100–200 слов)
AWX развернут: вы можете управлять Ansible‑проектами через веб‑интерфейс и REST API. На сервере CentOS 8 установлен стек контейнеров (awx_web, awx_task, postgres, rabbitmq, memcached). Для доступа используйте учётные данные admin, указанные в inventory. Убедитесь, что вы заменили все пароли и настроили бэкапы. Для продакшена рекомендуется рассмотреть AWX Operator и настроить HTTPS.
Заключение
Поздравляем: вы успешно установили AWX с помощью Docker на CentOS 8. AWX упростит управление инвентарями и запуском задач Ansible. Перед эксплуатацией в рабочей среде проверьте безопасность, бэкапы и план отказоустойчивости.
Ключевые выводы:
- Проверяйте и заменяйте дефолтные пароли.
- SELinux влияет на контейнеры — тестируйте режим permissive перед отключением.
- Для production рассмотрите Kubernetes/AWX Operator.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента