我正在尝试使用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:
吗?
答案 0 :(得分:1)
我显然缺少一些基本知识...
我不确定你是不是。我同意根据文档,nmap
插件应该按照您尝试使用的方式工作,但是像您一样,我无法获得groups
或compose
按说明工作的键。
幸运的是,我们可以直接使用constructed
广告资源插件来解决该问题。
由于我们需要多个清单文件,因此我们需要使用清单目录,而不是清单文件。我们将以下内容放入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
组。