Установка Ansible AWX на CentOS 7 с помощью Docker
Кратко о AWX
AWX — это open‑source проект, реализующий веб‑интерфейс, REST API и движок задач поверх Ansible. AWX является upstream‑репозиторием для коммерческого Ansible Tower.
Определение: AWX — интерфейс и оркестратор для выполнения Ansible‑плейбуков через веб и API.
Окружение в этом руководстве
Я использовал три сервера с минимальной установкой CentOS 7 и SELinux в режиме permissive:
- 192.168.1.25 — AWX сервер
- 192.168.1.21 — client1
- 192.168.1.22 — client2
Факт‑бокс:
- Минимум памяти: 4 ГБ
- CPU: минимум 2 ядра
- Место на диске: минимум 20 ГБ
- Поддерживаемая платформа: Docker, OpenShift или Kubernetes
Подготовка сервера и системные требования
- Проверьте конфигурацию SELinux:
sestatusОжидаемый пример вывода приведён в исходном руководстве.
Важно: в примере SELinux находится в режиме permissive.
- Отключите firewalld (в демонстрации):
systemctl stop firewalld
systemctl disable firewalld- Добавьте записи хостов в /etc/hosts:
192.168.1.25 awx.sunil.cc awx
192.168.1.21 client1.sunil.cc client1
192.168.1.22 client2.sunil.cc client2- Включите репозиторий EPEL и установите нужные пакеты:
yum install -y epel-release
yum install -y yum-utils device-mapper-persistent-data lvm2 ansible git python-devel python-pip python-docker-py vim-enhanced- Подключите репозиторий Docker CE и установите Docker:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl start docker
systemctl enable dockerКлонирование репозитория AWX и подготовка инвентаря
- Клонируйте AWX и лого:
git clone https://github.com/ansible/awx.git
cd awx/
git clone https://github.com/ansible/awx-logos.git- Перейдите в папку с инсталлятором:
cd installer/- Отредактируйте файл inventory и задайте параметры (фрагмент примера):
postgres_data_dir=/var/lib/pgdocker
awx_official=true
awx_alternate_dns_servers="4.2.2.1,4.2.2.2"
project_data_dir=/var/lib/awx/projects- Полный пример конфигурации без комментариев можно увидеть в исходном материале (в разделе inventory).
Развёртывание AWX с помощью Ansible (Docker)
Запустите плейбук установки:
ansible-playbook -i inventory install.yml -vvПроцесс займёт некоторое время — зависит от скорости сети и мощности сервера.
Проверка запущенных контейнеров Docker:
docker container lsВы увидите контейнеры awx_task, awx_web, memcached, rabbitmq, postgres и т.д.
Доступ к AWX
AWX будет доступен в браузере на порту, указанном в inventory (в примере — 80). На странице входа используйте учётные данные:
- username: admin
- password: password

Настройка входа по SSH без пароля (passwordless) из AWX сервера
На всех трёх хостах создайте пользователя ansible:
useradd ansibleЗатем на AWX‑сервере, под пользователем ansible, сгенерируйте SSH‑ключ:
su - ansible
ssh-keygenСодержимое публичного ключа (id_rsa.pub) скопируйте в /home/ansible/.ssh/authorized_keys на каждом клиенте (client1 и client2). Не забудьте права:
chmod 700 /home/ansible/.ssh
chmod 600 /home/ansible/.ssh/authorized_keysДобавьте запись в sudoers, чтобы пользователь ansible мог выполнять команды без пароля (на всех хостах):
visudo
# Добавить строку:
ansible ALL=(ALL) NOPASSWD: ALLПроверьте подключение с AWX‑сервера:
ssh client1
ssh client2Примеры подтверждения первого подключения будут предлагать добавить запись в known_hosts — ответьте «yes».
Добавление учетных данных в веб‑интерфейсе AWX
- В веб‑интерфейсе выберите Credentials -> Add и создайте новую запись.

- Выберите организацию, задайте имя пользователя (в примере — ansible) и тип “Machine” (Machine credentials).

- В поле SSH Private Key вставьте приватный ключ (файл id_rsa) с AWX‑сервера и сохраните запись.

Пример приватного ключа (сокращённо) приведён в исходном материале — в реальной среде всегда используйте ваш ключ и храните его безопасно.

Важно: Никогда не публикуйте приватные ключи в открытых репозиториях.
Создание инвентаря и хостов в AWX
- Inventories -> Add Inventory, заполните поля и сохраните.

- Внутри инвентаря добавьте хосты (client1 и client2) и укажите IP/host‑имя.

- После добавления обоих хостов проверьте подключение с помощью Run Command -> ад‑хок команда ping.

Результаты выполнения и журналы видны в интерфейсе задач.

Тестирование и проверка
- Проверьте, что контейнеры awx_web и awx_task запущены.
- Убедитесь, что AWX отвечает на HTTP/порт, указанный в inventory.
- В интерфейсе AWX выполните ad‑hoc команду ping по инвентарю.
Частые проблемы и способы решения
Проблема: Плейбук зависает при установке зависимостей. Решение: перезапустите Docker, проверьте доступ к Docker Hub и достаточность дискового пространства.
Проблема: SSH‑подключение не работает. Проверка: права на каталог .ssh и authorized_keys, наличие ключа, запись в sudoers.
Проблема: SELinux блокирует доступ. Проверка: sestatus и временно режим permissive для отладки.
Альтернативные подходы
- Установка AWX через RPM/packaged installer — полезно для продакшн‑сред и управления версиями.
- Развёртывание AWX в Kubernetes/OpenShift — рекомендуемый путь для масштабируемых инсталляций.
- Использование внешнего PostgreSQL и RabbitMQ для продакшн‑развёртывания.
Руководство: чек‑лист перед запуском (роль‑ориентированный)
Для администратора системы:
- Проверить SELinux, firewall и доступность Docker.
- Убедиться в достаточности ресурсов (память, CPU, диск).
Для инженера DevOps:
- Подготовить инвентарь и SSH ключи.
- Настроить учётные данные и инвентарь в AWX.
Для владельца безопасности:
- Убедиться в надёжном хранении приватных ключей и ограничении доступа к AWX.
Критерии приёмки
- AWX веб‑интерфейс доступен и отвечает.
- Контейнеры awx_web и awx_task запущены и функционируют.
- Ad‑hoc команда ping успешно выполняется на всех хостах инвентаря.
- SSH‑доступ от имени ansible работает без пароля.
Безопасность и лучшие практики
- Храните приватные ключи в безопасном хранилище (Vault/Secrets manager).
- Для продакшна используйте TLS для веб‑интерфейса и надёжные пароли/SSO.
- Рассмотрите внешние службы БД и очередей сообщений для устойчивости.
Короткая шпаргалка (cheat sheet)
- Start Docker: systemctl start docker
- Deploy AWX: ansible-playbook -i inventory install.yml -vv
- List containers: docker container ls
- SSH test: ssh client1
Заключение
В этом руководстве показана быстрая установка AWX на CentOS 7 с Docker, настройка безпарольного SSH для пользователя ansible и создание инвентаря и учётных данных в веб‑интерфейсе. Для продакшн‑сред рекомендуются развёртывание в Kubernetes/OpenShift, использование внешних сервисов БД/очередей и жёсткая политика безопасности.
Важно: в следующих руководствах автор планирует показать установку через RPM и работу с API/запуск плейбуков.
Ссылки
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента