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

Установка Ansible AWX на CentOS 7 с помощью Docker

5 min read DevOps Обновлено 27 Nov 2025
Установка Ansible AWX на CentOS 7 через Docker
Установка 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

Подготовка сервера и системные требования

  1. Проверьте конфигурацию SELinux:
sestatus

Ожидаемый пример вывода приведён в исходном руководстве.

Важно: в примере SELinux находится в режиме permissive.

  1. Отключите firewalld (в демонстрации):
systemctl stop firewalld
systemctl disable firewalld
  1. Добавьте записи хостов в /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
  1. Включите репозиторий 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
  1. Подключите репозиторий 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 и подготовка инвентаря

  1. Клонируйте AWX и лого:
git clone https://github.com/ansible/awx.git
cd awx/
git clone https://github.com/ansible/awx-logos.git
  1. Перейдите в папку с инсталлятором:
cd installer/
  1. Отредактируйте файл 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
  1. Полный пример конфигурации без комментариев можно увидеть в исходном материале (в разделе 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

Вход в AWX

Настройка входа по 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

  1. В веб‑интерфейсе выберите Credentials -> Add и создайте новую запись.

Добавление учётных данных

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

Кнопка Add Пользователь Ansible

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

Тип учётных данных

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

Приватный ключ в AWX

Важно: Никогда не публикуйте приватные ключи в открытых репозиториях.

Создание инвентаря и хостов в AWX

  1. Inventories -> Add Inventory, заполните поля и сохраните.

Добавить инвентарь

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

Добавить хост Детали хоста

  1. После добавления обоих хостов проверьте подключение с помощью 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/запуск плейбуков.

Ссылки

Поделиться: 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 быстро