在Ansible Tower中使用Ansible Content Collections中的清单插件

IT环境变得越来越复杂。在这些情况下,对于IT自动化系统而言,拥有有关网络中存在并要进行处理的节点的最新信息至关重要。在Red Hat Ansible自动化平台中,此问题通过所谓的库存(库存a)-受管节点列表来解决。







在最简单的形式中,清单是静态文件。当您开始使用Ansible时,这是理想的选择,但是随着自动化的扩展,它变得不足。



这就是为什么:



  1. 当某些事物不断变化,工作负载以及它们之后运行的节点出现和消失时,如何更新和维护受监视节点的完整列表?
  2. -, ?


这两个问题的答案都给出了动态清单(动态清单a)-看起来是自动化单元的脚本或插件,指的是事实的来源(事实的来源)。此外,动态清单会自动将节点分类为组,以便您可以更准确地选择目标系统以执行Ansible自动化。



库存插件使Ansible用户能够访问外部平台以动态查找目标节点,并在形成库存时将这些平台用作真相来源。标准的Ansible来源列表包括云平台AWS EC2,Google GCP和Microsoft Azure,并且还有许多其他适用于Ansible的清单插件。



Ansible Tower附带了许多清单插件,它们可以直接使用,并且除了上述云平台之外,还提供与VMware vCenter,Red Hat OpenStack Platform和Red Hat Satellite的集成。对于这些插件,只需提供凭据即可连接到目标平台,然后将它们用作Ansible Tower中的库存数据源。



除了Ansible Tower随附的标准插件外,Ansible社区还支持其他清单插件。随着向Red Hat Ansible Content Collections的迁移这些插件已包含在各自的集合中。



在本文中,我们将以使用流行的IT服务管理平台ServiceNow的清单插件为例,客户经常在其中将有关其所有设备的信息存储在CMDB中。另外,CMDB可以包含对自动化有用的上下文,例如有关服务器所有者,服务级别(生产/非生产),已安装的更新和维护窗口的信息。Ansible清单插件可以与ServiceNow CMDB一起使用,并且是galaxy.ansible.com门户上servicenow集合一部分



Git仓库



要使用Ansible Tower中集合中的清单插件,必须将其设置为项目源。在Ansible Tower中,项目是与某种版本控制系统(例如git存储库)的集成,该系统不仅可以用于同步自动化剧本,还可以用于同步变量和清单。



我们的存储库实际上非常简单:



├── collections
│   └── requirements.yml
└── servicenow.yml


servicenow.yml文件包含插件清单的详细信息。在我们的例子中,我们只需要在CMDB ServiceNow中指定要使用的表即可。此外,我们还设置了将添加为节点变量的字段,以及有关我们要创建的组的某些信息。



$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
  - key: sn_sys_class_name | lower
	prefix: ''
	separator: ''
  - key: sn_os | lower
	prefix: ''
	separator: ''


请注意,这并未指定我们将以任何方式连接到的ServiceNow实例,也未指定用于连接的任何凭据。我们稍后将在Ansible塔中配置所有这些。需要



collections / Requirements.yml文件,以便Ansible Tower可以下载所需的馆藏,从而获得所需的清单插件。否则,我们将必须在所有Ansible Tower节点上手动安装和维护此集合。



$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow


一旦将此配置推送到源代码管理,就可以在Ansible Tower中创建一个项目,该项目链接到相应的存储库。下面的示例将Ansible塔链接到我们的github存储库。注意SCM URL:它允许您注册一个帐户以连接到私有存储库,以及指定特定的分支,标记或提交结帐。







创建ServiceNow的凭据



如前所述,我们存储库中的配置不包含用于连接到ServiceNow的凭据,也不会充实我们将与之通信的ServiceNow实例。因此,要设置此数据,我们将在Ansible塔中创建凭据。根据ServiceNow库存插件文档,有许多环境变量可用来设置连接参数,例如:



= username
    	The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME


在这种情况下,如果设置了SN_USERNAME环境变量,则清单插件将使用它作为连接到ServiceNow的帐户。



我们还需要设置SN_INSTANCE和SN_PASSWORD变量。



但是,Ansible Tower没有这种类型的凭据,可以在其中为ServiceNow指定此数据。但是Ansible Tower允许我们定义自定义凭据类型,您可以在文章“ Ansible Tower功能聚焦:自定义凭据”中了解更多信息



在我们的例子中,ServiceNow的自定义凭据的输入配置如下所示:



fields:
  - id: SN_USERNAME
	type: string
	label: Username
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Snow Instance
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE


这些凭据将作为具有相同名称的环境变量公开。在进样器配置中对此进行了描述:



env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'


因此,我们已经定义了所需的凭据类型,现在您可以添加ServiceNow帐户并设置实例,用户名和密码,如下所示:







我们创建库存



因此,现在我们都准备在Ansible Tower中创建库存。我们称之为ServiceNow:







创建清单后,我们可以将数据源附加到清单上。在这里,我们指向之前创建的项目,并在源代码控制存储库中输入库存YAML文件的路径,在本例中,该路径在项目根目录中为servicenow.yml。此外,必须绑定ServiceNow帐户。







要检查一切工作原理,让我们尝试通过单击“全部同步”按钮与数据源同步。如果一切配置正确,则应将节点导入到我们的清单中:







请注意,我们所需的组也已创建。



结论



在本文中,我们以ServiceNow插件为例,研究了如何使用Ansible Tower中集合中的清单插件。我们还保护了凭据以连接到我们的ServiceNow实例。从项目中绑定清单插件不仅可以与第三方或自定义插件一起使用,还可以用于修改某些常规清单的工作。这使Ansible自动化平台可以无缝地与现有工具无缝集成,以自动化日益复杂的IT环境。



在此处找到有关本文所涉及主题以及使用Ansible的其他方面的更多信息:





*Red Hat . , .



All Articles