来自ansible插件的动态广告资源组:nmap

问题描述 投票:0回答:1

我正在尝试使用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:吗?

ansible jinja2 ansible-inventory nmap
1个回答
0
投票

我显然缺少基本的东西...

我不确定你是谁。我同意根据文档,nmap插件应该按照您尝试使用的方式工作,但是像您一样,我无法使groupscompose键按所述方式工作。

幸运的是,我们可以直接使用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.yml20constructed.yml,因为我们需要确保constructed插件在nmap插件之后运行(此外,我们在此处检查inventory_hostname,因为这是规范名称您的Ansible广告资源中的主机)。


有了所有这些,您应该看到想要的行为:unknown变量中具有inventory_hostname的主机将最终出现在unknown组中。

© www.soinside.com 2019 - 2024. All rights reserved.