Установка AWX на Ubuntu 18.04 с Nginx и HTTPS

AWX — это открытая веб-панель и REST API для управления Ansible. В этом руководстве показано пошаговое развёртывание AWX на Ubuntu 18.04 с использованием Docker, docker-compose, Nginx в качестве обратного прокси и защищённого HTTPS. Включены проверки, рекомендации по безопасности и инструкции по устранению проблем.
Важно: требования — Ubuntu 18.04, 4 ГБ ОЗУ минимум и 2 ядра, привилегии root.
Краткое содержание
- Подготовка сервера и установка Docker, Ansible, nodejs
- Загрузка кода AWX, правка inventory и генерация секретов
- Запуск ansible-playbook для деплоя контейнеров AWX
- Настройка Nginx как обратного прокси с TLS
- Настройка UFW и тестирование доступа
- Чек-листы, отладка, безопасность и контроль качества
Требования и примечания
- ОС: Ubuntu Server 18.04 LTS
- Ресурсы: минимум 4 ГБ оперативной памяти, 2 CPU (рекомендуется больше для продакшн)
- Права: root или пользователь с sudo
- Контейнеризация: Docker + docker-compose (в руководстве используется docker-compose 1.9.0)
Примечание: в более новых окружениях docker-compose можно брать из пакета docker/compose или использовать плагин Docker Compose V2; проверьте совместимость с версией AWX.
Что мы сделаем
- Установим Docker и Ansible
- Установим дополнительные пакеты (pip, docker-compose, nodejs)
- Склонируем исходники AWX и настроим inventory
- Запустим установочный Ansible playbook
- Настроим Nginx как обратный прокси с HTTPS
- Настроим UFW
- Протестируем доступ и работоспособность
Шаг 1 — Установка Docker и Ansible
Сначала обновите список пакетов и установите Ansible и Docker Engine:
sudo apt updateУстановка Ansible и Docker:
sudo apt install ansible -y
sudo apt install docker.io -yПроверьте версии после установки:
docker version
ansible --version
Небольшая проверка: служба docker должна быть активна (systemctl status docker). Если нет — включите и запустите: sudo systemctl enable –now docker.
Шаг 2 — Установка дополнительных пакетов
AWX-инсталлятор использует python-пакеты и старую версию docker-compose в примере. Установим pip и нужные пакеты:
sudo apt install python-pip -yЗатем установите docker-compose и docker-py через pip (в руководстве используется docker-compose==1.9.0):
pip install docker-compose==1.9.0
pip install docker-py
Установим nodejs и npm (нужны для сборки фронтенда при некоторых сборках):
sudo apt install nodejs npm -yОбновите npm до актуальной версии:
npm install npm --globalПосле этого все зависимости установлены и можно переходить к загрузке AWX.
Шаг 3 — Скачивание исходников AWX и настройка inventory
Склонируйте репозиторий AWX и перейдите в каталог установщика:
git clone https://github.com/ansible/awx.git
cd awx/installer/Сгенерируйте секретный ключ для AWX (пример — 32 байта в hex):
openssl rand -hex 32Скопируйте сгенерированный ключ в безопасное место.
Отредактируйте файл inventory:
vim inventoryИзмените или добавьте параметры в inventory как в примере ниже. Локализация путей и портов в примере:
- postgres_data_dir=/var/lib/pgdocker
- host_port=8080
- use_docker_compose=true
- docker_compose_dir=/var/lib/awx
Задайте безопасные пароли и admin-пользователя (замените примеры на свои значения):
pg_username=awx
pg_password=hakaseposgresawx
pg_database=awx
pg_port=5432
rabbitmq_password=hakaserabbitmqawx
rabbitmq_erlang_cookie=cookiemonster
admin_user=hakase
admin_password=hakasepass
secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33
project_data_dir=/var/lib/awx/projectsПримените команду для просмотра настроек без комментариев:
grep -v '^#' inventoryВажно: храните секреты вне репозитория, используйте менеджер секретов или Ansible Vault для продакшн-сред.
Шаг 4 — Установка Ansible AWX
Запустите playbook установщика:
ansible-playbook -i inventory install.ymlPlaybook скачает docker-образы и создаст контейнеры: postgresql, memcached, rabbitmq, awx_web и awx_task.

После окончания перейдите в каталог docker-compose и проверьте контейнеры:
cd /var/lib/awx
docker-compose psПросмотр логов сервиса task:
docker-compose logs taskЕсли playbook завершился с ошибками, просмотрите логи и повторно запустите ansible-playbook после устранения причин.
Шаг 5 — Установка и настройка Nginx как обратного прокси
Установите Nginx:
sudo apt install nginx -yСоздайте виртуальный хост:
cd /etc/nginx/sites-available/
vim awxВставьте конфигурацию (отредактируйте server_name и proxy_pass в соответствии с вашим окружением):
server {
listen 80;
server_name awx.hakase-labs.io;
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl http2;
server_name awx.hakase-labs.io;
access_log /var/log/nginx/awx.access.log;
error_log /var/log/nginx/awx.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_session_timeout 5m;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://10.5.5.20:8080/;
}
}Примечание: замените awx.hakase-labs.io на ваш домен и IP в proxy_pass на адрес, где работает AWX (например localhost:8080 или внутренний IP).
Активируйте сайт и проверьте конфигурацию:
ln -s /etc/nginx/sites-available/awx /etc/nginx/sites-enabled/
nginx -tЕсли ошибок нет — перезапустите Nginx:
sudo systemctl restart nginxРекомендация по TLS: используйте сертификаты от Let’s Encrypt (/etc/letsencrypt/live/…) или корпоративные сертификаты. Настройте автоматическое продление.
Шаг 6 — Настройка UFW
Откройте базовые порты для доступа:
ufw allow ssh
ufw allow http
ufw allow httpsВключите UFW:
ufw enableВведите “y” для подтверждения. Проверьте статус:
ufw status verboseШаг 7 — Тестирование
Откройте в браузере:
Должна открыться страница логина AWX.

Войдите под admin-пользователем, заданным в inventory (в примере admin_user=hakase, admin_password=hakasepass). После входа вы увидите административную панель AWX.

Если доступ работает по HTTPS и вы видите dashboard — установка успешна.
Критерии приёмки
- AWX доступен по HTTPS на настроенном домене
- Все ключевые контейнеры запущены (postgres, rabbitmq, memcached, awx_web, awx_task)
- Вход в систему под учётной записью admin возможен
- Логи task/web не содержат критических ошибок
Быстрый чек‑лист команд (cheat‑sheet)
- Просмотр контейнеров: docker-compose ps
- Логи сервиса: docker-compose logs task
- Перезапуск сервисов: docker-compose restart
- Повторный запуск установки: ansible-playbook -i inventory install.yml
- Проверка Nginx: nginx -t && sudo systemctl restart nginx
- Статус UFW: ufw status
Чек‑листы по ролям
Администратор (DevOps):
- Убедиться в доступности порта 443
- Проверить, что docker daemon активен
- Проверить корректность inventory и секретов
- Настроить бэкапы БД PostgreSQL
Служба безопасности:
- Проверить цепочку сертификатов TLS
- Настроить сильные шифры и TLSv1.2+
- Включить аудит и ротацию секретов
Разработчик/оператор AWX:
- Подключить нужные inventory и проекты
- Настроить credentials и креденшел‑плагины
- Протестировать job template и playbook
Советы по безопасности и рекомендации
- Всегда храните пароли и secret_key в защищённом хранилище (HashiCorp Vault, Ansible Vault).
- Используйте доверенные TLS-сертификаты и автоматизируйте продление (Certbot для Let’s Encrypt).
- Закройте ненужные порты и разрешайте доступ только с доверенных IP при необходимости.
- Настройте мониторинг контейнеров и централизованные логи.
Отладка: распространённые проблемы и решения
Проблема: контейнеры не запускаются / ошибка при создании volume
- Решение: проверьте права на каталоги (postgres_data_dir, docker_compose_dir). Выполните chown -R 1000:1000 /var/lib/pgdocker если требуется.
Проблема: Nginx возвращает 502 Bad Gateway
- Решение: проверьте, доступен ли backend (curl http://localhost:8080 на хосте), проверьте proxy_pass IP/порт, проверьте что контейнер awx_web слушает на ожидаемом интерфейсе.
Проблема: playbook завершился ошибкой при скачивании образов
- Решение: проверьте интернет-соединение и доступ к Docker Hub; убедитесь, что Docker запущен и авторизация при необходимости.
Общие команды для диагностики:
docker-compose ps
docker-compose logs web
docker-compose logs task
docker-compose up -d
journalctl -u docker.service --since "1 hour ago"
nginx -tРезервное копирование и откат (Runbook)
- Остановка AWX-сервисов:
docker-compose down- Бэкап БД PostgreSQL (если контейнер локальный):
docker exec -t pg_dumpall -U awx > /root/awx_db_backup.sql Бэкап конфигураций и projects: сохраните /var/lib/awx и inventory.
Откат: восстановите дамп в контейнер PostgreSQL и запустите docker-compose up -d.
Важно: тестируйте восстановление в тестовой среде.
Совместимость и миграция
- Инструкции в этом руководстве ориентированы на Ubuntu 18.04 и старую ветку AWX. Новые версии AWX могут потребовать более новой версии docker-compose и других зависимостей.
- Перед миграцией в продакшн проверьте совместимость образов и механизмов хранения данных.
Факт‑бокс — ключевые числа
- Минимальная ОЗУ: 4 ГБ
- Порт AWX по умолчанию в примере: 8080
- Внешние порты: 80 (redirect), 443 (HTTPS)
- Рекомендуемое: больше памяти и CPU для продакшн
Критические сценарии тестирования (acceptance)
- Доступ по HTTPS к главной странице AWX
- Успешный логин под admin-пользователем
- Создание и запуск простого job template (плейбук должен завершиться без ошибок)
- Восстановление из бэкапа PostgreSQL
Глоссарий (одна строка)
- AWX — открытая веб-оболочка и API для управления Ansible.
- Ansible — инструмент для автоматизации конфигурации и оркестрации.
- Docker — система контейнеризации приложений.
- Nginx — веб-сервер и обратный прокси.
- UFW — простой интерфейс управления брандмауэром на Ubuntu.
Короткая инструкция для анонса (100–200 слов)
Установка AWX на Ubuntu 18.04 позволяет получить бесплатную веб‑панель и REST API для управления Ansible. В этом руководстве подробно описаны шаги: установка Docker, Ansible и зависимостей; настройка inventory и секретов; запуск Ansible playbook для развёртывания контейнеров AWX; настройка Nginx как обратного прокси с HTTPS; настройка UFW и тестирование. Также приведены рекомендации по безопасности, чек‑листы для ролей, сценарии приёмного тестирования и процедуры резервного копирования и отката. Руководство подходит для тестовой и предпродакшн среды; перед переходом в продакшн рекомендуем адаптировать размеры ресурсов и политику хранения секретов.
Ссылки и источник
Оригинальный репозиторий проекта AWX и дополнительные инструкции:
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента