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

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

• 6 min read • DevOps • Обновлено 26 Nov 2025
AWX на Ubuntu 18.04 с Nginx и HTTPS
AWX на Ubuntu 18.04 с Nginx и HTTPS

Фото панели управления AWX, запущенной на сервере

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.

Что мы сделаем

  1. Установим Docker и Ansible
  2. Установим дополнительные пакеты (pip, docker-compose, nodejs)
  3. Склонируем исходники AWX и настроим inventory
  4. Запустим установочный Ansible playbook
  5. Настроим Nginx как обратный прокси с HTTPS
  6. Настроим UFW
  7. Протестируем доступ и работоспособность

Шаг 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 и проверка версий

Небольшая проверка: служба 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

Установка pip и пакетов Python

Установим 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.yml

Playbook скачает docker-образы и создаст контейнеры: postgresql, memcached, rabbitmq, awx_web и awx_task.

Результат выполнения Ansible playbook

После окончания перейдите в каталог 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 — Тестирование

Откройте в браузере:

https://awx.hakase-labs.io

Должна открыться страница логина AWX.

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

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

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

  1. Остановка AWX-сервисов:
docker-compose down
  1. Бэкап БД PostgreSQL (если контейнер локальный):
docker exec -t  pg_dumpall -U awx > /root/awx_db_backup.sql
  1. Бэкап конфигураций и projects: сохраните /var/lib/awx и inventory.

  2. Откат: восстановите дамп в контейнер 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 и дополнительные инструкции:

https://github.com/ansible/awx

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