我想生成一个报告(可能使用模板),根据有关它们的事实对我的主机进行分组 .
假设我的 /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)在一个ansible任务中对它们进行排序,然后将预先分组的数组数组交给模板,然后对其进行格式化 .
......我无法解决如何做到这两点 .
1 回答
我会使用动态库存脚本或group_by库存模块来执行此操作 . 我们暂时使用库存模块 . 这里的一个问题是ansible_distribution_version需要规范化为适当的变量 . 我会用过滤器来实现这一点 . 像这样的东西
正则表达式可能不对,但你明白了 . 然后您可以参考该组