自动化推动并赋能技术行业代际变革,并交付更可靠、更具动态性的系统,变更速度之快更是远超以往认知。
与此同时,这种高速变更也给资产与状态跟踪带来了新的挑战。许多企业既面临明确的审计义务,又需遵循职责分离要求,因此建立集中式工作流和资产跟踪系统来帮助满足这些要求就显得尤为重要。
通过在自动化系统和这些集中记录系统之间实现集成,可带来巨大的好处,这也是我们提供红帽 Ansible 自动化平台与 ServiceNow ITSM 集成解决方案的原因,即简化协同使用这两个系统的流程。在这篇博客文章中,我们将重点介绍这些集成的协同运作机制,并介绍近期推出的一些增强功能。
Ansible 自动化平台针对 ServiceNow ITSM 提供三种不同的集成:
- servicenow.itsm 认证内容集。这是红帽 Ansible 认证内容集,允许以各种方式与 ServiceNow 实例和数据交互。该认证内容集可通过 Ansible Galaxy 和 Ansible 自动化中心获取。
- 用于红帽 Ansible 自动化平台认证内容集的 API。此应用可通过 ServiceNow 商店免费获取。当无法单独通过 REST API 访问 ServiceNow 工作流时,此应用可提供无缝访问权限。
- 事件驱动的 Ansible 通知服务。这也是一个 ServiceNow 商店应用,允许通过 webhook 直接与事件驱动的 Ansible 集成。
Ansible 自动化平台与 ServiceNow 集成的使用方式
作为用户,如果您想要使用 Ansible 自动化平台与 ServiceNow 的集成,有多种选项可供您选择。这些选项并不具有排他性,您可以根据自己的需要使用任意功能。
ServiceNow 作为数据源(只读)
servicenow.itsm 内容集包含一个清单插件,该插件可以将 ServiceNow 用作 Ansible 清单来源,以便 Ansible 工作流可以使用直接存储在 ServiceNow 中的事实来定位服务器、服务器组和端点。经测试,此插件可支持超过 10,000 个清单项。我们最近在清单插件中添加了缓存功能,这将加快清单同步速度,尤其适用于较大的清单。此外,我们还提高了可能返回重复记录的查询的性能,从而为大型队列提供更优质的清单体验。
清单配置示例:
---
plugin: servicenow.itsm.now
table: cmdb_ci_ec2_instance
strict: false
cache: True
cache_plugin: ansible.builtin.jsonfile
cache_timeout: 3600
cache_connection: /tmp/cache
cache_prefix: now
columns:
- sys_id
- name
- fqdn
sysparm_query: nameSTARTSWITHmy-vm-
您还可以使用任何其他服务模块来查询 ServiceNow 对象(例如“问题”(Problems)、“事件”(Incidents)或“服务请求”(Service Requests))。这不需要对 ServiceNow 具有写入权限。
Ansible 自动化平台参与 ServiceNow 工作流(读写)
将 Ansible 自动化平台与 ServiceNow 结合使用的另一种方式是,让 Ansible 自动化平台创建、更新和删除 ServiceNow ITSM 记录。servicenow.itsm 内容集明确支持以下对象类型:
- 变更请求(包括“变更请求任务”(Change Request Tasks))
- 配置项(包括“关系”(Relationships))
- 事件
- 问题(包括“问题任务”(Problem Tasks))
- 服务目录
- 附件
由于问题 API 的变更,我们针对红帽 Ansible 认证内容集应用开发了 API。您需要在 ServiceNow 实例中安装此应用 API,以获得对问题 API 的全面支持。
此外,自版本 2.5.0 起,我们增加了“通用”支持,这意味着 servicenow.itsm 可以与任何支持 REST 协议的对象结合使用。
这些对象中的任何一个都可以通过内容集进行读取、创建、更新或删除。因此,可以构建这样一个 Ansible 工作流:查看事件,针对事件引用的配置项执行一些发现操作,然后将相应信息记录在事件中。
宜家就是一个很好的例子。宜家在 2024 年 AnsibleFest 大会上展示了他们如何将 Ansible 自动化平台与 ServiceNow 集成:
Ansible 自动化平台通过事件驱动的 Ansible 响应 ServiceNow 事件
随着 Ansible 自动化平台 2.4 中引入事件驱动的 Ansible,您可以将 ServiceNow 配置为通过 Webhook 直接或通过“中间”服务器将事件发送到 Ansible 自动化平台。
事件驱动的 Ansible 通知服务应用目前支持以下表格和事件类型:

Ansible 自动化平台中的事件 Rulebook 可以使用 servicenow.itsm 内容集和其他内容来对这些事件做出适当的响应。
最近,Nestle 进行了一次演示,展示他们如何利用事件驱动的 Ansible 在无需人工干预的情况下检测 Ansible 集群故障转移。
ServiceNow 增强功能
我们已针对代号为“犹他州”(Utah)、“温哥华”(Vancouver)和“华盛顿特区”(Washington DC)的 ServiceNow 版本,认证了事件驱动的 Ansible 通知服务和红帽 Ansible 认证内容集 API。当 ServiceNow 新版本正式发布后,我们将继续为新版本认证这些应用以及 servicenow.itsm 内容集。
摘要
将 Ansible 自动化平台与 ServiceNow 集成,目的是确保能够更加轻松地使用这两个系统;实现在 Ansible 自动化平台中使用 ServiceNow 清单的目标;利用 Ansible 工作流提供的信息来丰富 ServiceNow 记录;以及让 Ansible 自动化平台对 ServiceNow 生成的事件做出响应。我们将继续投资于 ServiceNow 集成,并致力于为用户和客户维护和支持这些功能。