1
2
3
4
5
作者:李晓辉

微信联系:Lxh_Chat

联系邮箱: 939958092@qq.com

有时候,我们需要在 Ansible Playbook 中使用的集合,可能并不包含在现有的自动化执行环境里。情况可能是这样:你的执行环境里可能有很多其他资源,但缺少某些特定的集合,正好需要你去补充。

不过别担心!如果遇到这种情况,你可以让自动化控制器在运行 Playbook 时,自动下载缺失的集合,保证一切顺利进行。

要做到这一点,你需要做两件事:

  1. 在 Ansible 项目中设置一个 collections/requirements.yml 文件,告诉系统你需要哪些其他集合。
  2. 配置自动化控制器所需的身份验证凭据,确保它能访问存储这些集合的 Ansible 自动化中心或私有自动化中心。

这样,你就能确保每次执行 Playbook 时,缺失的集合会自动拉取,完美匹配你的执行环境,确保自动化流程高效稳定!

为自动化控制器准备 Ansible 项目

当你使用 ansible-navigator run 命令来运行 Playbook 时,如果所需的 Ansible 内容集合没有包含在自动化执行环境中,你就需要手动安装这些集合。不过,通常情况下,项目会提供一个 collections/requirements.yml 文件,里面列出了所需的集合,你只需执行一下命令:

1
ansible-galaxy collection install -r collections/requirements.yml

这就能帮你安装所有必要的集合了。可是,自动化控制器并不会让你手动去跑这些命令。它会在你运行 Playbook 时,自动执行以下命令来安装集合和角色:

  • ansible-galaxy collection install -r collections/requirements.yml
  • ansible-galaxy role install -r roles/requirements.yml

更方便的是,在你的 Ansible 项目中,collections/requirements.yml 文件可能指向一些 Ansible 自动化中心或私有自动化中心,来提供你所需要的集合。

比如,下面这个 collections/requirements.yml 文件列出了两个集合,其中 redhat.insights 集合托管在 Ansible 自动化中心,而 ansible.posix 集合则在位于 hub.example.com 的私有自动化中心中:

1
2
3
4
5
collections:
- name: redhat.insights
source: https://console.redhat.com/api/automation-hub/
- name: ansible.posix
source: https://hub.example.com/api/galaxy/content/rh-certified/

管理⾝份验证凭据

为了让自动化控制器能够从 Ansible 自动化中心或任何私有自动化中心下载集合,你需要提供有效的登录凭据。这些凭据通常是 Ansible 自动化中心 API 令牌和 URL。按照以下步骤进行配置:

步骤 1:登录自动化控制器 Web UI

首先,使用你的管理员凭据登录到自动化控制器的 Web UI。

步骤 2:前往 “Resources” 部分

登录后,在界面顶部导航栏中找到 Resources,然后点击进入。

步骤 3:添加新凭据

  1. Resources 页面,找到并点击 Credentials 选项。
  2. 在凭据页面中,点击 Add 按钮,开始添加新的凭据。

步骤 4:选择凭据类型

  1. 在弹出的凭据添加页面中,选择 Ansible Galaxy/Automation Hub API Token 类型。

  2. 输入 Ansible 自动化中心 URL 和你的 API 令牌

    • Ansible 自动化中心 URL:通常是 https://console.redhat.com/api/automation-hub/
    • API 令牌:你可以通过访问 Ansible Automation Hub 来获取 API 令牌。

在你成功添加了 Ansible Galaxy/Automation Hub API Token 凭据后,接下来你需要将这些凭据与自动化控制器中的组织关联,确保自动化控制器可以在执行 playbook 时访问所需的集合。

步骤 1:前往 Access > Organizations

  1. 在自动化控制器的 Web UI 中,点击导航栏中的 Access,然后选择 Organizations 选项。

步骤 2:选择一个组织

  1. Organizations 页面,选择你希望与凭据关联的组织。

步骤 3:编辑组织设置

  1. 选择好组织后,点击 Edit 按钮来编辑该组织的设置。

步骤 4:关联凭据

  1. 在编辑组织的页面中,找到 Galaxy Credentials 字段。
  2. 在该字段中,添加你之前创建的 Ansible Galaxy/Automation Hub API Token 凭据,确保它可以作为该组织的凭据进行搜索集合。

步骤 5:保存设置

完成凭据关联后,点击 Save 按钮保存更改。这样,自动化控制器就能够通过这个组织的凭据来搜索并访问 Ansible 自动化中心中的集合。

配置⾃动化执⾏环境

为了在自动化控制器中使用自定义的自动化执行环境镜像,你需要按照以下步骤配置该镜像。

步骤 1:前往 Administration > Execution Environments

  1. 在自动化控制器的 Web UI 中,点击导航栏中的 Administration
  2. 在下拉菜单中选择 Execution Environments,进入自动化执行环境管理页面。

步骤 2:添加新的执行环境

  1. Execution Environments 页面,点击 Add 按钮来添加新的执行环境镜像配置。

步骤 3:填写表单

在弹出的表单中,你需要填写以下信息:

  • Name:指定你要在自动化控制器中使用的执行环境名称。这个名称将帮助你在控制器中识别和管理不同的执行环境。

  • Image:指定自动化执行环境的容器镜像。你需要填写完整的镜像路径,例如 localhost/ee-demo:v2.0 或其他仓库的镜像路径。

  • Pull:选择自动化控制器应如何拉取容器镜像。你可以选择以下选项:

    • Always:每次使用时都会拉取镜像。
    • If Not Present:如果镜像本地不存在,则拉取镜像。
    • Never:永远不会从外部仓库拉取镜像,只有本地镜像会被使用。
  • Registry Credential:为容器仓库选择现有凭据。如果镜像存储在私有容器仓库中,你需要为其选择一个已配置的凭据,用于认证并访问该仓库。

步骤 4:保存配置

填写完表单后,点击 Save 按钮保存配置。这样,你就成功配置了自动化执行环境镜像,自动化控制器将能够根据这个配置使用指定的镜像执行任务。

配置项⽬的默认⾃动化执⾏环境

在自动化控制器中设置 Ansible 项目时,你可以为该项目中的 playbook 指定默认的自动化执行环境。这样,当你运行 playbook 时,它会自动使用你指定的执行环境,而不必每次手动选择。

步骤 1:前往 Resources > Projects

  1. 在自动化控制器的 Web UI 中,点击导航栏中的 Resources
  2. 在下拉菜单中选择 Projects,进入项目管理页面。

步骤 2:添加新项目

  1. Projects 页面,点击 Add 按钮来添加新的项目。

步骤 3:填写项目配置表单

在弹出的表单中,你需要填写项目信息:

  • Execution Environment:在此字段中,选择你希望作为该项目默认使用的自动化执行环境。这个执行环境将会在运行该项目中的 playbook 时自动被使用。

步骤 4:保存配置

填写完项目相关的表单后,点击 Save 按钮保存配置。这样,你就为项目设置了默认的自动化执行环境,确保了在执行 playbook 时自动应用该环境。

在模板中指定⾃动化执⾏环境

当你在自动化控制器中创建作业模板时,你可以指定运行 playbook 所需的所有参数。这些参数包括包含该 playbook 的项目、所使用的清单文件以及访问受管节点所需的计算机凭据。

步骤 1:创建作业模板

  1. 进入 Resources > Templates 页面。
  2. 点击 Add 按钮来创建新的作业模板。

步骤 2:配置作业模板参数

在创建作业模板的过程中,你需要设置以下参数:

  • Project:选择包含你要执行的 playbook 的项目。
  • Inventory:选择运行 playbook 时使用的清单文件。
  • Credentials:选择用于访问目标受管节点的凭据。

步骤 3:指定自动化执行环境

除了以上基本参数设置外,你还可以选择在模板中指定具体的自动化执行环境:

  • Execution Environment:在此字段中,选择运行 playbook 时要使用的自动化执行环境。选择一个执行环境会覆盖该 playbook 所在项目中设置的默认执行环境。

步骤 4:保存并运行

完成模板配置后,点击 Save 保存模板。此时,当你使用该模板运行 playbook 时,指定的自动化执行环境将会被应用,而不再使用项目中的默认执行环境。

如果你在作业模板中没有选择特定的 Execution Environment,自动化控制器将会使用该 playbook 所在项目中指定的默认自动化执行环境。

启动作业

  1. 创建模板后,点击 Launch 按钮来启动作业并运行 playbook。

  2. 首次启动时的延迟:

    • 如果这是你第一次使用新指定的自动化执行环境,作业启动时可能会比后续运行时更慢。
    • 如果所需的自动化执行环境容器镜像在本地不存在,自动化控制器将需要从容器仓库下载该镜像,导致第一次启动时的延迟。