我正在尝试使用ansible中的nmap plugin创建动态广告资源,然后将插件返回的内容分组。不幸的是,我缺少了一些东西,因为我似乎无法创建一个组。在这种情况下,我有几台要分组的主机,名称为unknownxxxxxxxx。
plugin: nmap
strict: false
address: 10.0.1.0/24
ports: no
groups:
unknown: "'unknown' in hostname"
我运行我的插件-ansible-inventory -i nmap.yml --export --output=inv --list
但是收益总是一样的...
到目前为止,我不得不猜测可能的var名称
主机,主机,主机名,主机名,inventory_hostname,hostvars,host.fqdn,并且列表不停...
我显然缺少基本的东西,但是我似乎无法通过搜索找到任何产生任何结果的东西。
有人可以帮助我了解我在使用Jinja做错了什么吗?
也许我需要使用compose:
和keyed_groups:
吗?
我显然缺少基本的东西...
我不确定你是谁。我同意根据文档,nmap
插件应该按照您尝试使用的方式工作,但是像您一样,我无法使groups
或compose
键按所述方式工作。
幸运的是,我们可以直接使用constructed
广告资源插件来解决该问题。
我们需要使用清单目录,而不是清单file,因为我们需要多个清单文件。我们将以下内容放入ansible.cfg
:
[defaults]
inventory = inventory
然后我们将创建一个目录inventory
,我们将在其中放置两个文件。首先,我们将您的nmap
广告资源放入inventory/10nmap.yml
。它看起来像这样:
plugin: nmap
strict: false
address: 10.0.1.0/24
ports: false
然后我们将constructed
插件的配置放入inventory/20constructed.yml
:
plugin: constructed
strict: False
groups:
unknown: "'unknown' in inventory_hostname"
我们将文件命名为10nmap.yml
和20constructed.yml
,因为我们需要确保constructed
插件在nmap
插件之后运行(此外,我们在此处检查inventory_hostname
,因为这是规范名称您的Ansible广告资源中的主机)。
有了所有这些,您应该看到想要的行为:unknown
变量中具有inventory_hostname
的主机将最终出现在unknown
组中。