Установка и настройка 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"

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

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

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

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

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

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования