Гид по технологиям

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

5 min read DevOps Обновлено 27 Nov 2025
Установка Ansible AWX с Docker на CentOS 8
Установка Ansible AWX с Docker на CentOS 8

Иллюстрация AWX: логотип и веб-интерфейс

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 -y
dnf 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/projects

Important: замените 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

Дашборд AWX

После входа вы увидите стандартную панель управления 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)

  1. Остановите контейнеры: docker-compose -f ~/.awx/awxcompose/docker-compose.yml down
  2. Восстановите бэкап БД (pg_dump/pg_restore).
  3. Перезапустите контейнеры и проверьте целостность данных.

Краткое объявление (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.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро