Ansible自动化(二十七) 在自动化控制器中配置执行环境与集合
1 | 作者:李晓辉 |
有时候,我们需要在 Ansible Playbook 中使用的集合,可能并不包含在现有的自动化执行环境里。情况可能是这样:你的执行环境里可能有很多其他资源,但缺少某些特定的集合,正好需要你去补充。
不过别担心!如果遇到这种情况,你可以让自动化控制器在运行 Playbook 时,自动下载缺失的集合,保证一切顺利进行。
要做到这一点,你需要做两件事:
- 在 Ansible 项目中设置一个
collections/requirements.yml
文件,告诉系统你需要哪些其他集合。 - 配置自动化控制器所需的身份验证凭据,确保它能访问存储这些集合的 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 | collections: |
管理⾝份验证凭据
为了让自动化控制器能够从 Ansible 自动化中心或任何私有自动化中心下载集合,你需要提供有效的登录凭据。这些凭据通常是 Ansible 自动化中心 API 令牌和 URL。按照以下步骤进行配置:
步骤 1:登录自动化控制器 Web UI
首先,使用你的管理员凭据登录到自动化控制器的 Web UI。
步骤 2:前往 “Resources” 部分
登录后,在界面顶部导航栏中找到 Resources,然后点击进入。
步骤 3:添加新凭据
- 在 Resources 页面,找到并点击 Credentials 选项。
- 在凭据页面中,点击 Add 按钮,开始添加新的凭据。
步骤 4:选择凭据类型
在弹出的凭据添加页面中,选择 Ansible Galaxy/Automation Hub API Token 类型。
输入 Ansible 自动化中心 URL 和你的 API 令牌。
- Ansible 自动化中心 URL:通常是
https://console.redhat.com/api/automation-hub/
。 - API 令牌:你可以通过访问 Ansible Automation Hub 来获取 API 令牌。
- Ansible 自动化中心 URL:通常是
在你成功添加了 Ansible Galaxy/Automation Hub API Token 凭据后,接下来你需要将这些凭据与自动化控制器中的组织关联,确保自动化控制器可以在执行 playbook 时访问所需的集合。
步骤 1:前往 Access > Organizations
- 在自动化控制器的 Web UI 中,点击导航栏中的 Access,然后选择 Organizations 选项。
步骤 2:选择一个组织
- 在 Organizations 页面,选择你希望与凭据关联的组织。
步骤 3:编辑组织设置
- 选择好组织后,点击 Edit 按钮来编辑该组织的设置。
步骤 4:关联凭据
- 在编辑组织的页面中,找到 Galaxy Credentials 字段。
- 在该字段中,添加你之前创建的 Ansible Galaxy/Automation Hub API Token 凭据,确保它可以作为该组织的凭据进行搜索集合。
步骤 5:保存设置
完成凭据关联后,点击 Save 按钮保存更改。这样,自动化控制器就能够通过这个组织的凭据来搜索并访问 Ansible 自动化中心中的集合。
配置⾃动化执⾏环境
为了在自动化控制器中使用自定义的自动化执行环境镜像,你需要按照以下步骤配置该镜像。
步骤 1:前往 Administration > Execution Environments
- 在自动化控制器的 Web UI 中,点击导航栏中的 Administration。
- 在下拉菜单中选择 Execution Environments,进入自动化执行环境管理页面。
步骤 2:添加新的执行环境
- 在 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
- 在自动化控制器的 Web UI 中,点击导航栏中的 Resources。
- 在下拉菜单中选择 Projects,进入项目管理页面。
步骤 2:添加新项目
- 在 Projects 页面,点击 Add 按钮来添加新的项目。
步骤 3:填写项目配置表单
在弹出的表单中,你需要填写项目信息:
- Execution Environment:在此字段中,选择你希望作为该项目默认使用的自动化执行环境。这个执行环境将会在运行该项目中的 playbook 时自动被使用。
步骤 4:保存配置
填写完项目相关的表单后,点击 Save 按钮保存配置。这样,你就为项目设置了默认的自动化执行环境,确保了在执行 playbook 时自动应用该环境。
在模板中指定⾃动化执⾏环境
当你在自动化控制器中创建作业模板时,你可以指定运行 playbook 所需的所有参数。这些参数包括包含该 playbook 的项目、所使用的清单文件以及访问受管节点所需的计算机凭据。
步骤 1:创建作业模板
- 进入 Resources > Templates 页面。
- 点击 Add 按钮来创建新的作业模板。
步骤 2:配置作业模板参数
在创建作业模板的过程中,你需要设置以下参数:
- Project:选择包含你要执行的 playbook 的项目。
- Inventory:选择运行 playbook 时使用的清单文件。
- Credentials:选择用于访问目标受管节点的凭据。
步骤 3:指定自动化执行环境
除了以上基本参数设置外,你还可以选择在模板中指定具体的自动化执行环境:
- Execution Environment:在此字段中,选择运行 playbook 时要使用的自动化执行环境。选择一个执行环境会覆盖该 playbook 所在项目中设置的默认执行环境。
步骤 4:保存并运行
完成模板配置后,点击 Save 保存模板。此时,当你使用该模板运行 playbook 时,指定的自动化执行环境将会被应用,而不再使用项目中的默认执行环境。
如果你在作业模板中没有选择特定的 Execution Environment,自动化控制器将会使用该 playbook 所在项目中指定的默认自动化执行环境。
启动作业
创建模板后,点击 Launch 按钮来启动作业并运行 playbook。
首次启动时的延迟:
- 如果这是你第一次使用新指定的自动化执行环境,作业启动时可能会比后续运行时更慢。
- 如果所需的自动化执行环境容器镜像在本地不存在,自动化控制器将需要从容器仓库下载该镜像,导致第一次启动时的延迟。