你是否厌倦了每次在 Ansible 主机控制器上手动运行 Ansible playbooks 和 Ansible 命令?为什么不使用一个 Web 界面,并通过 Ansible AWX 让生活变得更轻松呢?
AWX 是由 Red Hat 赞助的开源 Web 应用程序,提供用户界面和 API 以执行所有 Ansible 任务。在本教程中,您将学习在 Ubuntu 主机上安装 Ansible AWX 并使用 Ansible AWX 管理清单。
提升您的自动化水平,立即使用 Ansible AWX!
先决条件
本教程包含逐步说明。如果您想一起操作,请确保已准备好以下内容:
- 一个 Ansible 控制器主机 – 本教程使用 Ubuntu 20.04.4 LTS 版本机器上的 Ansible v2.11.7。
- 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。

2. 接下来,运行以下命令来验证安装在您的计算机上的 docker compose 版本。
下面的输出显示最新的 Docker Compose 版本 v2.5.0 已安装,确认 Docker Compose 已正确安装。

3. 运行下面的每个命令以安装作为使用 Ansible AWX 的先决条件的软件包。



4. 现在,请运行以下命令从公共 Git 存储库下载(wget)AWX 软件包存档,然后解压软件包。

5. 运行以下命令更改(cd)到 AWX 安装目录(awx-17.1.0/installer/),并生成随机密码(pwgen)。
您的 AWX 安装目录(awx-17.1.0/installer/)可能因您机器上安装的 Ansible AWX 版本而异。
记下生成的密码,因为您将在 AWX 控制台中将其用作秘密密钥。

6. 最后,在文本编辑器中,打开 AWX 安装程序目录中的 inventory 文件(awx-17.1.0/installer/)。inventory 文件包含 AWX 的配置,将在登录 AWX UI 时使用。
在 inventory 文件中,将 admin_password 的值更改为 password,将 secret_key 更改为您在第五步生成的随机密码。

安装和启动 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。
如下所示,您可以看到一些任务的状态已更改,表示 AWX 主机未处于正确状态,并已修改为运行该命令。
相反,其他任务显示为 ok 状态,这表示它们不需要任何更改。

2. 接下来,运行下面的 docker 命令以列出所有可用的 Docker 容器。
下面的输出显示了正在运行的容器(awx_tasks、awx_redis、awx_web 和 awx_postgres),确认 AWX 已正确安装。

3. 最后,打开您喜欢的浏览器并导航到 Ansible AWX(https://AWX-HOST-IP:80)。确保将 AWX-HOST-IP 替换为您 Ansible 主机的 IP 地址。如果一切顺利,您将在浏览器上看到 Ansible AWX 登录页面,如下所示。
提供您的用户名(admin)和密码(password),然后单击登录以访问 Ansible AWX 仪表板。这些凭据是您在“安装依赖项并配置 Ansible AWX”部分的最后一步中配置的凭据。
AWX自动为HTTPS通信安装了一个自签名证书,可能需要在您的浏览器中接受。

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

创建和管理清单
现在您可以访问Ansible AWX仪表板,随时进行任务自动化。在本教程中,您将在Ansible AWX仪表板中管理多个Ansible组件。但首先,您需要创建和管理清单。
1. 在AWX仪表板上,单击清单,以打开存储在Ansible AWX中的清单列表。默认情况下,会存在一个演示清单,如下所示。
忽略演示清单,单击“添加”下拉按钮以创建新的清单。

2. 接下来,在“创建新清单”页面上指定以下参数,以配置在Ansible AWX仪表板中的第一个清单:
- 名称 – ATA学习(您可以根据需要提供名称)。
- 描述 – 描述清单,这是可选的,但有助于在众多清单中识别清单。
- 组织 – 选择默认选项。AWX创建了一个默认组织,但您也可以创建自己的组织。
一旦指定了所有以上详细信息,请单击下面显示的保存按钮。

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

创建和运行 Ansible 作业
您已成功配置库存,但除非您使用作业调用它,否则现在它是无用的。作业是 AWX 的一个实例,启动 Ansible playbook 对主机库存进行操作。当然,在调用作业之前,您必须首先创建一个:
要创建 Ansible 并运行 Ansible 作业:
1. 在 GitHub 存储库中创建一个 YML 文件,并复制/粘贴下面的 playbook。您可以根据需要命名 YML 文件,但本教程使用名为ata.yml的 playbook。

2. 转到您的 Ansible AWX 仪表板,并在左侧面板上单击项目,以访问可用项目的列表。在创建作业之前,您需要一个项目。
忽略演示项目,单击“添加”按钮创建新项目。

3. 提供新项目的详细信息,并单击“保存”以保存新项目:
- 名称 – 项目名称可以随意设置,但本教程将项目名称设置为myproject。
- 描述 – 与您的库存一样,添加描述是可选的,但有助于区分不同的项目。
- 组织 – 与您的库存类似,只需选择默认作为组织。
- 源代码控制凭据类型 – 选择Git作为您的SCM。
- 源代码控制URL – 指定您的源代码的GitHub URL。

4. 创建项目后,单击左侧边栏中的模板以访问所有可用模板,如下所示。
在模板页面上,单击“添加”下拉按钮,然后选择“添加作业模板”选项来创建模板。

5. 现在,请按照以下细节进行设置,并在底部单击“保存”以保存新的作业模板:
- 名称 – 将作业模板的名称设置为您喜欢的名称,但本教程将作业模板的名称设置为myjob。
- 作业类型 – 设置作业将采取的操作(运行)。
- 项目 – 选择您在第三步创建的项目(myproject)。
- 库存 – 选择您在“创建和管理库存”部分的第二步中创建的库存(ATA Learning)。
- 操作手册– 选择你在“创建和运行 Ansible 作业”部分(ata.yml)中创建的操作手册。

6. 最后,在模板页面上,使用以下步骤启动新创建的作业:
- 点击作业(myjob)以访问作业信息页面。
- 导航到详情选项卡,在那里你会看到作业的详细信息。
- 在页面底部点击启动以启动作业。

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

结论
在本教程中,你已经利用了 Ansible AWX 开源工具来管理 Ansible 操作手册、清单和具有单一 UI 仪表板的操作手册。你已经了解了如何运行 Ansible 作业,例如列出特定目录中的文件。
现在你已经对 Ansible AWX 软件有了扎实的知识,是否愿意在将来的 Ansible 操作手册中全部使用 Ansible AWX 运行?也许你想通过添加定时作业来自动化任务?