Высокоэффективная автоматизация с Ansible AWX

Вы устали выполнять Ansible playbooks и команды Ansible вручную каждый раз на вашем контроллере Ansible? Почему бы не использовать веб-интерфейс и не упростить свою жизнь с помощью Ansible AWX?

AWX – это открытое веб-приложение, спонсируемое Red Hat, которое предоставляет пользовательский интерфейс и API для выполнения всех задач Ansible. И в этом руководстве вы узнаете, как установить Ansible AWX на Ubuntu и управлять инвентаризацией с использованием Ansible AWX.

Повысьте свою эффективность с помощью высокоэффективной автоматизации с Ansible AWX уже сегодня!

Необходимые условия

Этот учебник включает пошаговые инструкции. Если вы хотите следовать за ними, убедитесь, что у вас есть следующее:

  • Docker – В этом учебнике используется Docker v19.03.11 на машине с версией Ubuntu 20.04.4 LTS.
  • Python v3.6 или более поздняя версия установлена на вашем управляющем хосте Ansible – Этот учебник использует Python v3.8.10.
  • A GitHub account with one private and one public repository created in GitHub that you will use to store Ansible Playbook.

Установка зависимостей и настройка Ansible AWX

Ansible AWS был основой для создания Ansible Tower. Ansible AWX делает работу с Ansible более удобной для ИТ-команд при тестировании; в лабораторной, разработке или другой среде POC.

Поскольку Ansible AWS не устанавливается на вашу систему Linux по умолчанию, сначала вам нужно установить Ansible AWS, чтобы запустить его как многоконтейнер, используя Ansible Playbook.

1. Выполните каждую из приведенных ниже команд, чтобы обновить пакеты вашей системы и установить плагин docker-compose.

# Обновление пакетов
sudo apt-get update
# Установка Docker Compose
sudo apt-get install docker-compose-plugin
Updating System Packages and Installing docker-compose

2. Затем выполните следующую команду, чтобы проверить версию установленного docker compose на вашем компьютере.

docker compose version

Вывод ниже показывает, что установлена последняя версия Docker Compose v2.5.0, подтверждая корректную установку Docker Compose.

Verifying Docker Compose Version

3. Выполните каждую из приведенных ниже команд, чтобы установить пакеты как предварительные требования для работы с Ansible AWX.

# Устанавливает NodeJS, так как AWS зависит от NodeJS.
sudo apt install nodejs npm
# Устанавливает Python3, который затем запускает Ansible Playbook.
sudo apt install python3-pip git pwgen unzip
# Устанавливает requests для удобной отправки HTTP/1.1-запросов.
sudo pip3 install requests==2.22.0 docker-compose==1.29.2
Installing npm Software
Installing Python
Installing Requests

4. Теперь выполните следующие команды для загрузки (wget) архива пакета AWX из общего репозитория Git, а затем разархивируйте пакет.

# Загрузите архив пакета AWX
wget https://github.com/ansible/awx/archive/17.1.0.zip
# Разархивируйте архив пакета AWX
unzip 17.1.0.zip
Downloading the AWS Package from the Git Repository

5. Выполните следующие команды для перехода (cd) в каталог установки AWX (awx-17.1.0/installer/) и создания случайного пароля (pwgen).

Ваш каталог установки AWX (awx-17.1.0/installer/) может отличаться в зависимости от установленной версии Ansible AWX на вашем компьютере.

cd awx-17.1.0/installer/
pwgen -N 1 -s 30

Запишите сгенерированный пароль, так как вы будете использовать его в качестве секретного ключа в консоли AWX.

Generating a Random Password

6. Наконец, в вашем текстовом редакторе откройте файл inventory в каталоге установщика AWX (awx-17.1.0/installer/). Файл inventory содержит конфигурации AWX, которые будут использоваться при входе в AWX UI.

В файле inventory измените значение admin_password на password и secret_key на случайный пароль, который вы сгенерировали на пятом шаге.

Updating Credentials of Ansible AWX in the Inventory File

Установка и запуск Ansible AWX с помощью сценария Ansible Playbook

Вы правильно настроили Ansible AWX, и теперь пришло время установить его с использованием сценария Ansible (install.yml). Сценарий Ansible install.yml поставляется вместе с пакетом Ansible AWX, который вы извлекли. Этот сценарий содержит задачи для выполнения команд по созданию образа Docker и запуску нескольких контейнеров.

1. Вызовите команду ansible-playbook ниже, чтобы выполнить сценарий Ansible install.yml.

ansible-playbook -i inventory install.yml 

Ниже вы можете видеть, что некоторые задачи изменили статус, указывая, что хост AWX не находился в правильном состоянии и был изменен для выполнения команды.

Напротив, другие задачи показывают статус ok, что указывает на то, что они не требуют изменений.

Executing the Ansible Playbook (install.yml)

2. Затем выполните команду docker ниже, чтобы перечислить все доступные контейнеры Docker.

docker ps

Приведенный ниже вывод показывает запущенные контейнеры (awx_tasks, awx_redis, awx_web и awx_postgres), подтверждая, что AWX установлен правильно.

Verifying all Docker Containers

3. Наконец, откройте ваш браузер и перейдите на Ansible AWX (https://AWX-HOST-IP:80). Обязательно замените AWX-HOST-IP на IP-адрес вашего хоста Ansible. Если все пройдет хорошо, вы увидите страницу входа в Ansible AWX в вашем браузере, как показано ниже.

Укажите ваше имя пользователя (admin) и пароль (password), и нажмите “Войти”, чтобы получить доступ к панели управления Ansible AWX. Это учетные данные, которые вы настроили на последнем шаге раздела “Установка зависимостей и настройка Ansible AWX”.

AWX автоматически устанавливает самоподписанный сертификат для HTTPS-коммуникации, который может потребовать подтверждения в вашем браузере.

Accessing the Ansible AWX Dashboard UI

После входа ваш браузер перенаправляется на панель управления AWX, как показано ниже.

Viewing the AWX Dashboard

Создание и управление инвентарями

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

1. На панели управления AWX нажмите “Инвентарь”, чтобы открыть список инвентарей, сохраненных в Ansible AWX. По умолчанию там есть демонстрационный инвентарь, как показано ниже.

Игнорируйте демонстрационный инвентарь и нажмите на кнопку “Добавить” для создания нового инвентаря.

Creating a New Inventory

2. Затем укажите следующие параметры на странице создания нового инвентаря, чтобы настроить свой первый инвентарь в панели управления Ansible AWX:

  • ИмяATA Learning (вы можете указать имя на свое усмотрение).
  • Описание – Опишите инвентарь, это необязательно, но помогает идентифицировать инвентари среди многих других.
  • Организация – Выберите опцию “По умолчанию”. AWX создает организацию по умолчанию, но вы также можете создать свою собственную.

После указания всех вышеуказанных данных нажмите кнопку “Сохранить”, как показано ниже.

Creating an Inventory in the Ansible AWX Dashboard

3. Наконец, щелкните по вкладке “Инвентарь” (левая панель), чтобы проверить наличие только что созданного инвентаря (ATA Learning), как показано ниже.

Verifying the Inventory in the Ansible AWX Dashboard

Создание и выполнение заданий Ansible

Вы успешно сконфигурировали свой инвентарь, но он бесполезен прямо сейчас, если вы не вызовете его с помощью задания. Задание – это экземпляр AWX, запускающий плейбук Ansible против инвентаря хоста. И, конечно же, прежде чем вызвать задание, сначала нужно создать одно:

Чтобы создать и выполнить задание Ansible, выполните следующее:

1. Создайте файл YML в репозитории GitHub и скопируйте/вставьте в него плейбук ниже. Вы можете назвать файл YML как вам угодно, но в этом руководстве используется плейбук с именем ata.yml.

---
  - name: "Playing with Ansible."
# Плейбук Ansible будет выполняться на локальном хосте, где установлен AWX
    hosts: localhost
    connection: local
    tasks:
# Ниже приведена задача по выполнению списка каталогов и файлов, присутствующих
    - name: "just execute a ls -lrt command"
      shell: "ls -lrt"
      register: "output"
# Вывод вышеуказанной задачи будет отображаться на экране
    - debug: var=output.stdout_lines
Creating a YML File in the Git Repository

2. Перейдите на свой панели управления Ansible AWX и щелкните по проектам в левой панели, чтобы получить доступ к спискам доступных проектов. Вам нужен проект, прежде чем вы сможете создать задание.

Проигнорируйте проект “Демо” и нажмите кнопку “Добавить”, чтобы создать новый проект.

Initializing Adding a New Project

3. Укажите данные нового проекта следующим образом и нажмите “Сохранить”, чтобы сохранить новый проект:

  • Имя – Имя проекта может быть любым, но в этом руководстве устанавливается имя проекта myproject.
  • Описание – Как и в вашем инвентаре, добавление описания не обязательно, но помогает идентифицировать проекты друг от друга.
  • Организация – Аналогично вашему инвентарю, просто выберите По умолчанию для организации.
  • Тип учетных данных исходного контроля версий – Выберите Git как вашу систему контроля версий.
  • URL системы контроля версий – Укажите URL-адрес GitHub вашего исходного кода.
Creating a New Project

4. После создания проекта перейдите на вкладку Шаблоны в левой боковой панели, чтобы получить доступ ко всем доступным шаблонам, как показано ниже.

На странице Шаблоны нажмите на кнопку Добавить в выпадающем списке и выберите опцию Добавить шаблон работы, чтобы создать шаблон.

Creating a New Job Template

5. Теперь укажите следующие детали и нажмите на кнопку Сохранить внизу, чтобы сохранить новый шаблон работы:

  • Имя – Установите имя шаблона работы по своему усмотрению, но в этом руководстве устанавливается имя шаблона работы myjob.
  • Тип работы – Установите действие, которое выполнит задание (Запустить).
  • Проект – Выберите проект, созданный в третьем шаге (myproject).
  • Инвентарь – Выберите инвентарь, созданный во втором шаге раздела «Создание и управление инвентаризацией» (ATA Learning).
  • Руководство – Выберите руководство, которое вы создали на первом этапе раздела “Создание и запуск заданий Ansible” (ata.yml).
Specifying Job Template Details

6. Наконец, на странице Шаблоны запустите только что созданное задание с помощью следующего:

  • Нажмите на задание (моё_задание), чтобы получить доступ к информационной странице задания.
  • Перейдите на вкладку Подробности, где вы увидите подробности задания.
  • Нажмите на Запуск внизу страницы, чтобы запустить задание.
Launching the Newly-created Job

Как видно ниже, задание успешно выполнилось на локальном хосте и перечислило все файлы в указанной в руководстве (ata.yml) директории.

Executing the Job Template

Вывод

В этом руководстве вы воспользовались открытым инструментом Ansible AWX для управления руководствами Ansible, инвентаризацией и руководствами с помощью единого пользовательского интерфейса. Вы коснулись выполнения задания Ansible, такого как перечисление файлов в определенной директории.

Теперь, когда у вас есть прочные знания программного обеспечения Ansible AWX, вы готовы запускать все свои будущие руководства Ansible с помощью Ansible AWX? Возможно, вы захотите автоматизировать задачи, добавив крон-задания?

Source:
https://adamtheautomator.com/ansible-awx/