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

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

• 6 min read • DevOps • Обновлено 24 Nov 2025
Установка AWX на Debian 10 — руководство
Установка AWX на Debian 10 — руководство

Иллюстрация: Ansible AWX — автоматизация и управление конфигурациями

Ansible — это инструмент с открытым исходным кодом для автоматизации: развертывания программного обеспечения, управления конфигурациями и деплоя приложений. AWX — это веб-приложение для управления Ansible: через интерфейс AWX вы управляете плейбуками, инвентарями, секретами и расписанием задач.

Преимущества AWX

  • Поддержка нескольких облачных платформ: AWS, Azure, GCP
  • Отслеживание активности пользователей
  • Повышение эффективности и безопасности операций
  • RBAC (ролевой доступ) и аутентификация
  • Планирование задач (job scheduling)
  • Интегрированные уведомления

Требования

  • Сервер с Debian 10 (Buster)
  • Доступ под root или эквивалентные права sudo
  • Доступ в интернет для скачивания пакетов и образов
  • Минимально рекомендованная конфигурация: 2 CPU, 4 ГБ RAM, 20+ ГБ свободного диска (зависит от нагрузки)

Важно: для production-окружения выделите больше ресурсов и продумайте резервирование данных PostgreSQL.

Что мы сделаем — краткая методология

  1. Обновим систему и установим базовые пакеты.
  2. Установим Ansible (для запуска playbook’а инсталляции AWX).
  3. Установим Docker и Docker Compose — AWX разворачивается в контейнерах.
  4. Установим Node.js, pip3 и вспомогательные утилиты.
  5. Скачиваем 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:// — вы будете перенаправлены на страницу входа AWX.

Страница входа Ansible AWX

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

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

  1. Создать новый проект в AWX, импортировать простой playbook, который выполняет echo «hello».
  2. Создать инвентори с localhost.
  3. Запустить 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.

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