10.4. 使用 Webhook
Webhook 提供了通过 Web 在应用程序间执行指定命令的功能。Ansible 自动化控制器目前提供 webhook 与 GitHub 和 GitLab 的集成。本参考环境描述了使用 GitHub 在自动化控制器中设置 Webhook 的步骤。
10.4.1. GitHub webhook 设置 复制链接链接已复制到粘贴板!
自动化控制器可以根据触发的 webhook 事件运行作业。以下为设置提供了分步。
创建 GitHub 个人访问令牌
生成用于自动化控制器的个人访问令牌(PAT)。
- 在 GitHub 帐户的配置集设置中,点 Settings。
在 Personal settings 下,点 Developer Settings。
- 在 Developer 设置中,点 Personal access token。
- 在个人访问令牌屏幕中点 Generate new token 按钮。
- 提示时,请输入您的 GitHub 帐户密码以继续。
- 在 Note 字段中,输入有关此 PAT 用途的简要描述。
- 在 Expiration 下拉菜单中选择 No expiration。
在 Scope 字段中,自动化控制器 Webhook 只需要存储库范围访问权限,但邀请除外。有关其他范围的详情,请点击表上方的链接来访问文档。
点页面底部的 Generate Token 按钮。
警告生成令牌后,请确保复制 PAT,因为它将在以后的步骤中供 Ansible Automation Platform 自动化控制器集群使用。在 GitHub 中您将无法再次访问此令牌。
创建 GitHub 存储库
在我们就位 PAT 后,下一步是创建一个 Git 存储库,在对存储库进行更改时由 GitHub Webhook 触发。
由于重点是能够轻松更新或修改我们的自动化控制器配置,因此此参考环境利用名为 redhat_cop.controller_configuration 的 Ansible 集合。
此 Ansible 集合允许使用控制器集合模块通过 Ansible 角色轻松与 Ansible 控制器服务器交互。
通过这个集合,我们可以使用这些预先存在的角色在所有站点中修改或更新我们的自动化控制器环境。
redhat_cop.controller_configuration 集合是一个社区项目,不受红帽支持。
在 GitHub 中,创建新存储库。
确保选择适当的 所有者 并提供 存储库名称。
- 此参考环境使用存储库名称 aap_refarch。
- 提供描述您的存储库的可选描述。
将您的存储库设置为公共或私有。
- 此参考环境将存储库 设置为公共。
- 使用 Add a README 文件 初始化存储库。
- 单击 创建存储库按钮。
在新创建的 GitHub 存储库中,会创建三个文件。
- playbook.yml - 具有所有适当角色的 playbook,以更新或修改我们的自动化控制器。
- requirements.yml - 一个 requirements.yml 文件,其中包含运行 playbook 所需的所有集合。
- group_vars/ all.yml - 包含要修改特定配置(role)的所有变量的 all.yml 文件。
这三个文件的目的是提供一种在将 group_vars/all.yml 修改为存储库时的方法,这将在 Ansible Automation Platform 自动化控制器集群中启动作业模板,以进行适当的更改或更新。
这三个文件的示例可在本指南的 附录 C, supplemental 部分或 https://github.com/ansible/aap_refarch部分找到
在 Ansible Automation Platform 自动化控制器集群中设置资源凭证
在将存储库用作代码之前,请在 Ansible Automation Platform 站点中设置适当的凭证资源。
这可确保创建新项目、工作流和作业模板时,我们可以轻松地将这些凭据附加到这些资源。
以下步骤演示了如何创建我们的两个必要的凭证。
与之前创建的 GitHub (PAT)令牌关联的凭证。
与将更新的 Ansible Automation Platform 站点关联的其他凭证。每个 Ansible Automation Platform 站点都会自行更新,如 site1 更新 site1。
在每个 Ansible Automation Platform 网站上:
- 登录到 Ansible Automation Platform 自动化控制器仪表板
在 Resources→ Credentials 下,点蓝色 添加按钮。
- 提供一个名称,如 GitHub PAT
- 选择 GitHub Personal Access Token 作为 凭证类型。
- 在 Type Details 中,使用之前从 GitHub 生成的令牌添加 secret。
点击 Save。
注意记下此凭证的名称,因为它将用于回发到 GitHub 的作业模板。
设置 GitHub PAT 凭证后,为现有 Ansible Automation Platform 环境创建第二个凭证。
在 Resources→ Credentials 下,点蓝色 添加按钮。
- 提供一个名称 , 如 AAP_Site1
- 提供 Red Hat Ansible Automation Platform 作为 凭证类型。
在 Type Details 中,添加适当的详情
- Red Hat Ansible Automation Platform,如 controlplane-cluster.site1.example.com
- 用户名,如 admin
- 密码,例如 redhat
- 如果 SSL 证书已签名,请确保在 Options 中选择 Verify SSL。
- 点击 Save。
在 Ansible Automation Platform 站点 2 上重复此部分。
controlPlane-cluster.site1.example.com 使用,因为此引用环境利用负载均衡器。对负载均衡器的设置超出了此参考环境的范围。
创建配置作为代码项目
将配置作为代码项目的目的是创建一个工作流,其中包含一个作业模板,每次更新配置时会自动运行。
这样可确保当您进行更改(如设置变量)时,Git 存储库 playbook 为大量自动化控制器配置运行适当的角色。
本节会创建一个项目、工作流和作业模板来实现上述目的。
在一个仪表板的 Ansible Automation Platform 站点中,
- 在 Resources→ Projects 下,点蓝色 添加按钮。
- 提供一个名称 , 如 Configuration as Code Project
- 选择 Default 作为机构
- 选择 Default 执行环境 作为 Execution Environment
- 选择 Git 作为 Source Control Credential Type
在 类型详情中,
- 添加 Source Control URL (您的 GitHub 存储库)
选项内
- 选择 Clean,Delete,Update Revision on Launch
- 点击 Save。
接下来,创建一个工作流模板。
-
在 Resources→ Templates 下,点 blue Add
Add 工作流模板。 - 提供一个名称 , 如 Configuration as Code Workflow
在 Options 中,选中标记 启用 Webhook。
- 在 Webhook 详情中,选择 GitHub 作为 Webhook 服务。
- 在 Webhook 详情中,选择之前创建的 GitHub PAT 令牌作为 Webhook 凭证,如 GitHub PAT
- 点击 Save。
- 在 Please click the Start 按钮开始 窗口中,点右上角的 Save。
- 复制 Webhook URL 和 Webhook 密钥,因为它们将在以后使用。
在 Ansible Automation Platform 站点 2 上重复上述过程。
为存储库启用 GitHub Webhook
在创建了 Ansible Automation Platform 工作流模板以及带有所需文件的 GitHub 存储库时,下一步是为我们的存储库启用 Webhook,如 aap_refarch。
- 在 GitHub 存储库的主页中,选择 Settings 选项卡。
在 Settings 选项卡中,选择 Webhooks。
- 在 Webhooks 部分中,选择 Add webhook 按钮。
- 输入 Payload URL (工作流的Webhook URL)。
- 将 Content type 下拉菜单更改为 application/json。
- 输入 Secret (工作流的Webhook 密钥)。
保留默认值使用推送事件,然后单击添加 Webhook 按钮。
警告默认情况下,GitHub 在提供有效负载时验证 SSL 证书。如果您的自动化控制器 SSL 证书 没有签名,请确保 禁用SSL 验证。
在 Ansible Automation Platform 站点 2 上重复上述过程。
将配置创建为代码作业模板
为我们 的配置创建作业模板,因为代码项目 在每次更新 Git 存储库时都会自动运行 playbook.yml 文件。
这样可确保因为需要配置更改,我们可以使用 Ansible Automation Platform 控制器 API 来适当地进行这些更改。当我们在所有 Ansible Automation Platform 站点合并相同的方法时,所有更改都会在配置的站点间成为全局性。
-
在 Resources→ Templates 下,点 blue Add
Add job template。 - 提供 名称,如 Configuration as Code Job
- 选择 Run 作为 Job Type
- 选择 Demo Inventory 作为 清单
- 选择 Configuration as Code Project 作为项目
- 选择 Default 执行环境 作为 Execution Environment
- 选择 playbook.yml 作为 Playbook
- 选择 Credentials 并将类别从 Machine 切换到 Red Hat Ansible Automation Platform
- 为 Ansible Automation Platform 站点选择适当的凭证,如 AAP_Site1
- 在 Options 中,选择 Enable webhook。
- 选择 GitHub 作为 Webhook 服务。
- 选择之前创建的 GitHub PAT 令牌作为 Webhook 凭证,如 GitHub PAT
- 点击 Save。
在 Ansible Automation Platform 站点 2 上重复上述过程。
将创建的配置更新为代码工作流
在以前的版本中,创建了 Configuration as Code 工作流。此工作流的目的是确保 Configuration as Code Project 始终保持同步,并且 Configuration as Code 作业会在存储库更改时将配置作为代码 playbook 运行。
- 在 Resources→ Templates 下,选择您的模板。例如 Configuration as Code Workflow
- 在 Details 部分中,选择 Visualizer 选项卡,再单击绿色的 Start。
- 对于 Node Type,选择 Project Sync 并选择适当的项目,例如 Configuration as Code Project,然后单击 Save。
- 将鼠标悬停在 Configuration as Code Project 上,然后选择加号"+"符号。
- 在 Add Node 窗口中,选择 Always as to when this node should be execution,再单击 Next。
- 选择 Configuration as Code Job 作为 Node Type,再单击 Save。
- 返回可视化工具后,选择右上角的 Save 按钮。
验证配置作为代码设置
在 redhat_cop.controller_configuration 中已经包含的许多角色时,一个简单的方法来验证所有内容是否按预期工作,方法是使用适当的 yaml 更新 group_vars/all.yml 文件来创建用户。
如果要创建用户,我们会仔细查看 用户角色文档,以进一步查看我们的所有变量。
进一步审阅后,我们注意到创建一个名为 John 的非管理员用户,如下所示:
group_vars/all.yml
--- controller_user_accounts: - user: "john" is_superuser: false password: "redhat"
---
controller_user_accounts:
- user: "john"
is_superuser: false
password: "redhat"
当使用以上更新 group_vars/all.yml 文件并推送到 Git 存储库后,Ansible Automation Platform 自动化控制器中的作业应该启动。
这可以通过在自动化控制器仪表板的 Views 部分下选择 Jobs 来验证。参考中的作业应具有作业的数量,后跟作业名称。对于此参考环境,您会看到类似于 8-Configuration as Code Job 的内容,并带有 TypePlaybook 运行
作业完成后,其状态将为 Successful。
以 admin 身份注销,并以用户 john 身份(使用密码 redhat 重新记录)应确认作业成功。
如果您遵循此整个章节,并为每个 Ansible Automation Platform 站点正确设置 Webhook,您会注意到用户 john 由对应的 Ansible Automation Platform 平台同时创建。
虽然本示例是简化的一个配置(角色),但允许配置 Ansible Automation Platform 自动化控制器的许多配置(角色)在 redhat_cop.controller_configuration 中提供。
可以在以下位置找到其他 示例:示例配置.
虽然 Ansible 集合具有您需要的许多关键角色,但不仅限于在此 Ansible 集合中可以找到的内容。您的机构可实施或创建新的角色,以进一步增强您的功能。