Установка и настройка AWX (Web-интерфейс для работы с Ansible Playbook)

На данный момент у нас используется GitLab для работы с Ansible Playbook. В целом все устраивает и деплой производится из пайплайн GitLab, но хотелось бы использовать более специализированный инструмент.

Анализ доступных решений показал, что наиболее подходящим и полноценным решением является AWX который как раз и представляет собой специализированный WEB-интерфейс для работы с Ansible PlayBook.

Установка AWX в Docker

Установка Docker в RedOS

Подготовка системы

# dnf update -y
# dnf install -y yum-utils device-mapper-persistent-data lvm2
# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Устанавливаем Docker

# dnf install -y docker-ce docker-ce-cli

Настраиваем автозапуск

# systemctl enable docker
# systemctl start docker

Проверяем статус

# systemctl status docker
# docker ps

Устанавливаем Docker Compose

# dnf install docker-compose.x86_64

Устанавливаем Ansible и Docker-py

# dnf install python3-pip.noarch
# dnf install ansible
# pip install docker-py

Устанавливаем git и клонируем репозиторий AWX

# dnf install -y git
# git clone https://github.com/ansible/awx.git
# cd ./awx/
# git checkout 24.3.1

Установка AWX

Редактируем Inventory файл

# mcedit tools/docker-compose/inventory

Задаем параметры базы данных.

pg_password="Qe32f7932t"
broadcast_websocket_secret="Qe32f7932t"
secret_key="Qe32f7932t"

Собираем образ системы

# make docker-compose-build

Проверяем, что образ собран корректно

# docker image list
REPOSITORY                  TAG       IMAGE ID       CREATED        SIZE
<none>                      <none>    b18c3d934cf0   10 hours ago   2.38GB
ghcr.io/ansible/awx_devel   devel     1b58e9c4bce4   10 hours ago   2.38GB

Запускаем сборку и загрузку прочих компонентов системы

# make docker-compose

В процессе запуска будет создано окружение и к базе данных применены миграции. Обратите внимание, что суперпользователь администратор создается автоматически со случайным паролем который выводится в консоль после применения миграций.

tools_awx_1       | Superuser created successfully.
tools_awx_1       | Admin password: xxxxPASSWORDxxxx

Если сейчас попробовать подключиться к web-интерфейсу по адресу https://10.88.14.115:8043 то получим ошибку, что web-интерфейс на собран.

Приступаем к сборке интерфейса.

Сборка WEB-интерфейса AWX

Останавливаем текущий docker-compose комбинацией ctrl+c и запускаем docker-образы фоновым процессом.

# make docker-compose COMPOSE_UP_OPTS=-d

Для сборки нам понадобится NodeJS и установим его командой.

# dnf install nodejs

Запускаем сборку WEB-интерфейса командой.

# make ui-next

Удаляем старый образ и все последовательно пересобираем.

Дополнительно

Задаем политику перезапуска контейнеров (для автозапуска после перезагрузки).

# docker update --restart unless-stopped tools_awx_1
# docker update --restart unless-stopped tools_postgres_1
# docker update --restart unless-stopped tools_redis_1

Если вы пропустили логин-пароль администратора на этапе создания, то можете создать супер-пользователя командой.

# docker exec -ti tools_awx_1 awx-manage createsuperuser

Если при сборке вы поучили ошибку.

DOCKER_BUILDKIT=1 docker build \
        --ssh default= \
        -f Dockerfile.dev \
        -t ghcr.io/ansible/awx_devel:devel \
        --build-arg BUILDKIT_INLINE_CACHE=1 \
        --cache-from=ghcr.io/ansible/awx_devel:devel .
[+] Building 0.0s (0/0)                                                                                                                                     docker:default
ERROR: invalid empty ssh agent socket: make sure SSH_AUTH_SOCK is set
make: *** [Makefile:569: docker-compose-build] Ошибка 1

В данном случае необходимо сгененировать сокет аутентификации и передать его в переменную окружения.

# ssh-agent -t 3h
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXcN85Oh/agent.2073; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2074; export SSH_AGENT_PID;
echo Agent pid 2074;

Экспортируем переменную.

# export SSH_AUTH_SOCK="/tmp/ssh-XXXXXXcN85Oh/agent.2073"

Похожие записи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Nextcloud — отличное решение для хранения файлов, но управление пользователями вручную становится головной болью при масштабировании. Keycloak позволяет централизовать аутентификацию, обеспечивая безопасность, поддержку MFA (двухфакторной аутентификации) и удобный вход через…

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Пакеты в Ubuntu по умолчанию настроены на работу с серверами, имеющими довольно много оперативной памяти. Нам нужно жёстко ограничить потребление памяти для работы на Mikro VPS. Запускать будем мой блог…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Интеграция Gitea и Keycloak: пошаговое руководство

Интеграция Gitea и Keycloak: пошаговое руководство

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда