我想生成一个报告(可能使用模板),该报告根据有关主机的事实对主机进行分组。
假设我的服务器中有以下服务器/etc/ansible/hosts
(ansible_distribution
以及ansible_distribution_version
括号中指定的事实):
mercer (RedHat, 7.2)
grocer (RedHat, 6.2)
draper (Solaris, 10)
fishmonger (RedHat, 7.2)
goldsmith (Solaris, 11)
skinner (RedHat, 7.2)
我想要做的就是得到一个看起来像这样的文件:
**RedHat 6.2 Servers**
grocer
**RedHat 7.2 Servers**
mercer
fishmonger
skinner
**Solaris 10 Servers**
draper
**Solaris 11 Servers**
goldsmith
我不知道尝试一下是否会更好:
A)遍历play_hosts并提取事实,然后将新变量写入为('fact1','fact2','hostname'),然后在jinja2模板中使用groupby遍历该新变量以生成报告。
B)在一项繁重的任务中将它们全部排序,然后将预先分组的数组数组交给模板,然后对其进行格式化。
...而且我也不知道该怎么做。
我将使用动态清单脚本或group_by清单模块来执行此操作。现在让我们来看一下库存模块。这里的一个问题是ansible_distribution_version需要规范化为适当的变量。我会用一个过滤器来完成。像这样
- hosts: all
tasks:
- group_by:
key: OSGROUP_{{ ansible_distribution_version | upper | regex_relace('(| |\.', '') }}
正则表达式可能不正确,但您明白了。然后,您可以参考该组
- hosts: OSGROUP_REDHAT72
tasks:
- debug: msg="Do RedHat 7.2 stuff to {{inventory_name}}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句