使用 Ansible AWX 实现高效自动化

你是否厌倦了每次在 Ansible 主机控制器上手动运行 Ansible playbooks 和 Ansible 命令?为什么不使用一个 Web 界面,并通过 Ansible AWX 让生活变得更轻松呢?

AWX 是由 Red Hat 赞助的开源 Web 应用程序,提供用户界面和 API 以执行所有 Ansible 任务。在本教程中,您将学习在 Ubuntu 主机上安装 Ansible AWX 并使用 Ansible AWX 管理清单。

提升您的自动化水平,立即使用 Ansible AWX!

先决条件

本教程包含逐步说明。如果您想一起操作,请确保已准备好以下内容:

  • Docker – 本教程使用 Ubuntu 20.04.4 LTS 版本机器上的 Docker v19.03.11。
  • 安装 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 使得 IT 团队更容易在测试、实验室开发或其他 POC 环境 中使用 Ansible。

由于 Ansible AWS 默认情况下未安装在您的 Linux 系统上,您首先必须安装 Ansible AWS,以便您可以将其作为 Ansible Playbook 的多容器运行。

1. 运行下面的每个命令以更新系统包并安装 docker-compose-plugin。

# 更新软件包
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. 现在,请运行以下命令从公共 Git 存储库下载(wget)AWX 软件包存档,然后解压软件包。

# 下载 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. 最后,在文本编辑器中,打开 AWX 安装程序目录中的 inventory 文件(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 playbook(install.yml)进行安装了。 install.yml Ansible playbook 包含您提取的 Ansible AWX 软件包。该 playbook 包含执行命令以构建 Docker 镜像并运行多个容器的任务。

1. 调用下面的 ansible-playbook 命令来运行 install.yml Ansible Playbook。

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 替换为您 Ansible 主机的 IP 地址。如果一切顺利,您将在浏览器上看到 Ansible AWX 登录页面,如下所示。

提供您的用户名(admin)和密码(password),然后单击登录以访问 Ansible AWX 仪表板。这些凭据是您在“安装依赖项并配置 Ansible AWX”部分的最后一步中配置的凭据。

AWX自动为HTTPS通信安装了一个自签名证书,可能需要在您的浏览器中接受。

Accessing the Ansible AWX Dashboard UI

登录后,您的浏览器将重定向到AWX仪表板,如下所示。

Viewing the AWX Dashboard

创建和管理清单

现在您可以访问Ansible AWX仪表板,随时进行任务自动化。在本教程中,您将在Ansible AWX仪表板中管理多个Ansible组件。但首先,您需要创建和管理清单

1. 在AWX仪表板上,单击清单,以打开存储在Ansible AWX中的清单列表。默认情况下,会存在一个演示清单,如下所示。

忽略演示清单,单击“添加”下拉按钮以创建新的清单。

Creating a New Inventory

2. 接下来,在“创建新清单”页面上指定以下参数,以配置在Ansible AWX仪表板中的第一个清单:

  • 名称ATA学习(您可以根据需要提供名称)。
  • 描述 – 描述清单,这是可选的,但有助于在众多清单中识别清单。
  • 组织 – 选择默认选项。AWX创建了一个默认组织,但您也可以创建自己的组织。

一旦指定了所有以上详细信息,请单击下面显示的保存按钮。

Creating an Inventory in the Ansible AWX Dashboard

3. 最后,点击库存选项卡(左侧面板)验证新创建的库存(ATA Learning)是否存在,如下所示。

Verifying the Inventory in the Ansible AWX Dashboard

创建和运行 Ansible 作业

您已成功配置库存,但除非您使用作业调用它,否则现在它是无用的。作业是 AWX 的一个实例,启动 Ansible playbook 对主机库存进行操作。当然,在调用作业之前,您必须首先创建一个:

要创建 Ansible 并运行 Ansible 作业:

1. 在 GitHub 存储库中创建一个 YML 文件,并复制/粘贴下面的 playbook。您可以根据需要命名 YML 文件,但本教程使用名为ata.yml的 playbook。

---
  - name: "Playing with Ansible."
# Ansible Playbook 将在安装了 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作为您的SCM。
  • 源代码控制URL – 指定您的源代码的GitHub URL。
Creating a New Project

4. 创建项目后,单击左侧边栏中的模板以访问所有可用模板,如下所示。

在模板页面上,单击“添加”下拉按钮,然后选择“添加作业模板”选项来创建模板。

Creating a New Job Template

5. 现在,请按照以下细节进行设置,并在底部单击“保存”以保存新的作业模板:

  • 名称 – 将作业模板的名称设置为您喜欢的名称,但本教程将作业模板的名称设置为myjob
  • 作业类型 – 设置作业将采取的操作(运行)。
  • 项目 – 选择您在第三步创建的项目(myproject)。
  • 库存 – 选择您在“创建和管理库存”部分的第二步中创建的库存(ATA Learning)。
  • 操作手册– 选择你在“创建和运行 Ansible 作业”部分(ata.yml)中创建的操作手册。
Specifying Job Template Details

6. 最后,在模板页面上,使用以下步骤启动新创建的作业:

  • 点击作业(myjob)以访问作业信息页面。
  • 导航到详情选项卡,在那里你会看到作业的详细信息。
  • 在页面底部点击启动以启动作业。
Launching the Newly-created Job

如下所示,作业已成功在本地主机上运行,并列出了在操作手册(ata.yml)中指定目录中的所有文件。

Executing the Job Template

结论

在本教程中,你已经利用了 Ansible AWX 开源工具来管理 Ansible 操作手册、清单和具有单一 UI 仪表板的操作手册。你已经了解了如何运行 Ansible 作业,例如列出特定目录中的文件。

现在你已经对 Ansible AWX 软件有了扎实的知识,是否愿意在将来的 Ansible 操作手册中全部使用 Ansible AWX 运行?也许你想通过添加定时作业来自动化任务?

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