来自 ansible 插件的动态清单组:nmap
Dynamic inventory groups from ansible plugin: nmap
我正在尝试在 ansible 中使用 nmap plugin 创建一个动态清单,然后将插件 return 的东西分组。不幸的是,我遗漏了一些东西,因为我似乎无法创建一个组。
在这种情况下,我有一对名为 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
但是 return 总是一样的...
到目前为止,我已经开始猜测可能的变量名称
host, hosts, hostnames, hostname, inventory_hostname, hostvars, host.fqdn, and the list goes on and on...
我显然遗漏了一些基本的东西,但我似乎无法通过搜索找到任何产生任何结果的东西。
有人可以帮助我了解我在使用 jinja 时做错了什么吗?
也许我需要使用 compose:
和 keyed_groups:
?
I'm obviously missing something basic...
我不确定你是。我同意根据文档 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 清单中主机的规范名称)。
所有这些都准备就绪后,您应该会看到您正在寻找的行为:在 inventory_hostname
变量中具有 unknown
的主机将最终出现在 unknown
组中。
我正在尝试在 ansible 中使用 nmap plugin 创建一个动态清单,然后将插件 return 的东西分组。不幸的是,我遗漏了一些东西,因为我似乎无法创建一个组。
在这种情况下,我有一对名为 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
但是 return 总是一样的...
到目前为止,我已经开始猜测可能的变量名称
host, hosts, hostnames, hostname, inventory_hostname, hostvars, host.fqdn, and the list goes on and on...
我显然遗漏了一些基本的东西,但我似乎无法通过搜索找到任何产生任何结果的东西。
有人可以帮助我了解我在使用 jinja 时做错了什么吗?
也许我需要使用 compose:
和 keyed_groups:
?
I'm obviously missing something basic...
我不确定你是。我同意根据文档 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 清单中主机的规范名称)。
所有这些都准备就绪后,您应该会看到您正在寻找的行为:在 inventory_hostname
变量中具有 unknown
的主机将最终出现在 unknown
组中。