Установка Ansible AWX на Debian 10

Ansible — это инструмент с открытым исходным кодом для автоматизации: развертывания программного обеспечения, управления конфигурациями и деплоя приложений. AWX — это веб-приложение для управления Ansible: через интерфейс AWX вы управляете плейбуками, инвентарями, секретами и расписанием задач.
Преимущества AWX
- Поддержка нескольких облачных платформ: AWS, Azure, GCP
- Отслеживание активности пользователей
- Повышение эффективности и безопасности операций
- RBAC (ролевой доступ) и аутентификация
- Планирование задач (job scheduling)
- Интегрированные уведомления
Требования
- Сервер с Debian 10 (Buster)
- Доступ под root или эквивалентные права sudo
- Доступ в интернет для скачивания пакетов и образов
- Минимально рекомендованная конфигурация: 2 CPU, 4 ГБ RAM, 20+ ГБ свободного диска (зависит от нагрузки)
Важно: для production-окружения выделите больше ресурсов и продумайте резервирование данных PostgreSQL.
Что мы сделаем — краткая методология
- Обновим систему и установим базовые пакеты.
- Установим Ansible (для запуска playbook’а инсталляции AWX).
- Установим Docker и Docker Compose — AWX разворачивается в контейнерах.
- Установим Node.js, pip3 и вспомогательные утилиты.
- Скачиваем AWX, настраиваем inventory и запускаем ansible-playbook.
Подготовка системы
Обновите пакеты:
apt-get update -yУстановите необходимые утилиты:
apt-get install apt-transport-https ca-certificates software-properties-common unzip gnupg2 curl git -yЕсли вы используете sudo, добавьте sudo перед командами.
Установка Ansible
В репозиториях Debian 10 может не быть актуальной версии Ansible, поэтому добавим репозиторий PPA и ключ:
echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu bionic main" | tee /etc/apt/sources.list.d/ansible.listДобавьте GPG-ключ:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367Обновите индексы и установите Ansible:
apt-get update -y
apt-get install ansible -yПроверка версии:
ansible --versionОжидаемый вывод (пример):
ansible 2.9.19
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.16 (default, Oct 10 2019, 22:02:15) [GCC 8.3.0]
Примечание: Ansible версии 2.9 совместим с плейбуками AWX v17.x, но в будущем проверьте требования совместимости.
Установка Docker и Docker Compose
Добавьте ключ Docker и репозиторий:
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"Установите Docker CE:
apt-get update -y
apt-get install docker-ce -yПроверьте Docker:
docker --versionПример вывода:
Docker version 20.10.5, build 55c4c88
Установка Docker Compose (загрузка бинарника):
curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-Linux-x86_64 | cut -d '"' -f 4 | wget -qi -Сделайте бинарник исполняемым и переместите в /usr/local/bin:
chmod +x docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-composeПроверка:
docker-compose versionПример вывода:
docker-compose version 1.28.5, build c4eb3a1f
docker-py version: 4.4.4
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
Замечание: в зависимости от даты и источника, версия Docker Compose может отличаться. Зафиксируйте версию для pip/pip3 зависимостей ниже.
Установка Node.js, npm и Python-зависимостей
Установите Node.js и npm:
apt-get install nodejs npm -y
npm install npm --globalУстановите дополнительные зависимости для установки AWX:
apt-get install python3-pip git pwgen -yУстановите версию python-модуля docker-compose, соответствующую бинарной версии
pip3 install docker-compose==1.28.5Важно: убедитесь, что версия docker-compose==1.28.5 совпадает с установленной бинарной версией. Если вы используете другую версию docker-compose, измените номер.
Загрузка и установка AWX
Скачайте релиз AWX (в примере используется версия 17.1.0):
wget https://github.com/ansible/awx/archive/17.1.0.zipРаспакуйте архив:
unzip 17.1.0.zipПерейдите в каталог установщика:
cd awx-17.1.0/installer/Сгенерируйте секретный ключ (SECRET_KEY):
pwgen -N 1 -s 30Пример вывода (пример ключа):
3BgGA8MnM4gKTXV8r7vQhwjjNixO6o
Отредактируйте файл inventory, задав имя администратора, пароль и secret_key:
nano inventoryИзмените строки:
admin_user=admin
admin_password=securepassword
secret_key=3BgGA8MnM4gKTXV8r7vQhwjjNixO6o
Сохраните файл и запустите плейбук установки:
ansible-playbook -i inventory install.ymlУстановка должна вывести множество задач (TASK) и завершиться без ошибок. Пример успешного фрагмента вывода:
changed: [localhost]
TASK [local_docker : Create Docker Compose Configuration] ***********************************************************************************
changed: [localhost] => (item={u'mode': u'0600', u'file': u'environment.sh'})
changed: [localhost] => (item={u'mode': u'0600', u'file': u'credentials.py'})
changed: [localhost] => (item={u'mode': u'0600', u'file': u'docker-compose.yml'})
changed: [localhost] => (item={u'mode': u'0600', u'file': u'nginx.conf'})
changed: [localhost] => (item={u'mode': u'0664', u'file': u'redis.conf'})
TASK [local_docker : Render SECRET_KEY file] **********************************************************************************************
changed: [localhost]
TASK [local_docker : Remove AWX containers before migrating postgres so that the old postgres container does not get used] ****************
ok: [localhost]
TASK [local_docker : Run migrations in task container] ************************************************************************************
changed: [localhost]
TASK [local_docker : Start the containers] ************************************************************************************************
changed: [localhost]
TASK [local_docker : Update CA trust in awx_web container] ********************************************************************************
changed: [localhost]
TASK [local_docker : Update CA trust in awx_task container] *******************************************************************************
changed: [localhost]
TASK [local_docker : Wait for launch script to create user] *******************************************************************************
ok: [localhost]
TASK [local_docker : Create Preload data] *************************************************************************************************
changed: [localhost]
PLAY RECAP **********************************************************************************************************************************
localhost : ok=21 changed=12 unreachable=0 failed=0 skipped=73 rescued=0 ignored=1
Если playbook завершился с ошибками — см. раздел «Устранение неполадок» ниже.
Доступ к веб-интерфейсу AWX
Откройте браузер и перейдите по адресу http://

Введите admin_user и admin_password, указанные в inventory, и нажмите Log In. После удачной авторизации вы увидите панель управления AWX:

Критерии приёмки
- Веб-интерфейс AWX доступен по HTTP/HTTPS и открывается логином администратора.
- Контейнеры awx_web, awx_task и база данных PostgreSQL запущены (docker ps).
- Можно создать инвентори, импортировать плейбук и запустить тестовую job.
Рольовые чек-листы (кратко)
- Администратор:
- Проверяет состояние контейнеров: docker ps
- Настраивает бэкапы PostgreSQL
- Включает HTTPS (см. шагы безопасности)
- DevOps-инженер:
- Загружает плейбуки в проект
- Настраивает credentials и инвентори
- Настраивает воркеры и масштабирование
- Оператор/пользователь:
- Создаёт и запускает Jobs
- Читает логи выполнения
Безопасность и эксплуатация
- Всегда переводите AWX на HTTPS: используйте nginx или внешний обратный прокси с TLS (Let’s Encrypt).
- Не храните административные пароли в открытом виде; используйте Vault или секреты окружения.
- Делайте регулярные бэкапы базы данных PostgreSQL и томов volumes Docker, где хранится состояние AWX.
- Обновляйте Docker и AWX своевременно; тестируйте обновления на staging перед production.
Альтернативные подходы
- AWX Operator (Kubernetes): если у вас есть кластер k8s, рассмотрите AWX Operator — современный способ развертывания AWX в Kubernetes.
- Red Hat Ansible Tower: коммерческая версия с поддержкой и расширенными функциями.
- Самостоятельный деплой Ansible + AWX в виртуальных машинах для изоляции данных.
Когда этот процесс может не подойти
- На системах с ограниченным дисковым пространством — контейнеры и базы данных быстро занимают место.
- Если требуется HA (высокая доступность) и отказоустойчивость — стандартный docker-compose-подход ограничен, лучше k8s.
Устранение неполадок — распространённые ошибки и решения
- Ошибка соединения с Docker при запуске playbook:
- Проверьте, запущен ли демон Docker: systemctl status docker
- Убедитесь, что текущий пользователь имеет права на /var/run/docker.sock или выполните команды от root
- Проблемы с версиями docker-compose:
- Совместимость бинарного docker-compose и python-модуля: используйте одинаковую версию
- Ошибка миграции базы данных:
- Проверьте логи контейнера awx_task и postgres: docker logs
- Проверьте свободное место на диске
- Проверьте логи контейнера awx_task и postgres: docker logs
- AWX доступен только по localhost:
- Убедитесь, что nginx внутри контейнера слушает 0.0.0.0 или настроен проброс портов Docker
Полезные команды для диагностики:
docker ps -a
docker logs
ansible-playbook -i inventory install.yml --limit localhost -vvv
journalctl -u docker.service Советы по миграции и совместимости
- Перед обновлением AWX создайте бэкап базы данных и экспорт конфигурации.
- Если вы мигрируете с более старой версии AWX, обязательно проверьте release notes на предмет изменённых настроек inventory.
- В production рассмотрите использование внешней PostgreSQL, а не встроенного контейнера.
Краткая галерея граничных случаев (edge cases)
- Развёртывание в окружении с прокси: настройте переменные окружения HTTP_PROXY/HTTPS_PROXY для Docker и apt.
- SELinux/AppArmor: если включены, убедитесь, что политики позволяют Docker и AWX работать.
- Файловые системы с небольшими лимитами inodes: PostgreSQL может не работать корректно.
Пример простого сценария проверки (acceptance test)
- Создать новый проект в AWX, импортировать простой playbook, который выполняет echo «hello».
- Создать инвентори с localhost.
- Запустить Job Template и убедиться, что задача завершилась успешно и вывела expected output.
Критерии приёмки:
- Job завершилась со статусом SUCCESS.
- Логи доступны в веб-интерфейсе.
- Пользователи с разными ролями имеют соответствующие права доступа.
Заключение
Поздравляю — у вас установлен AWX на Debian 10. AWX даёт удобный веб-интерфейс для управления Ansible, планирования задач и контроля доступа. Для production-развёртывания рекомендуются дополнительные меры: HTTPS, внешняя база данных PostgreSQL, регулярные бэкапы и тестирование обновлений на staging-среде.
Если нужно, могу помочь с:
- настройкой HTTPS через nginx и Let’s Encrypt;
- переносом AWX в Kubernetes через AWX Operator;
- созданием playbook для автоматизации бэкапов и обновлений.
Часто задаваемые вопросы
Как поменять пароль администратора после установки?
Выполните команду создания пользователя или измените пароль через интерфейс AWX: Users → выберите admin → Change Password. Если интерфейс недоступен, используйте manage.py в контейнере awx_task для ручного изменения.
Можно ли запустить AWX в режиме HTTPS сразу на этапе установки?
Да, можно настроить nginx/обратный прокси с TLS и пробросом на контейнеры AWX. Часто HTTPS настраивают вне контейнеров (на хосте или в балансировщике).
Как сделать бэкап PostgreSQL, используемой AWX?
Делайте регулярные дампы pg_dump или снимки томов Docker. Для внешней PostgreSQL используйте стандартные инструменты резервного копирования PostgreSQL.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента