0
我想生成一個報告(可能使用模板),根據他們的事實對我的主機進行分組。如何根據Ansible事實將Ansible變成組主機?
說我在我的/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)將它們全部排序在一個合理的任務中,然後將一組預先分組的數組轉換爲模板,並對其進行格式化。
...我無法解決如何做。
這聽起來很有希望,但有沒有辦法可以循環OSGROUP_ *? 我更願意以一種非常普遍的方式編寫單個任務,而不是每個OS組都有一個任務 - 如果沒有其他任何內容,這意味着每次有新的操作系統類型進入該分區時都不需要添加新任務。 –
看起來像答案是使用類似於以下內容: with_dict:groups when:'OSGROUP_'in item.key 但尚未嘗試過。 –
您也可以基於此分組運行角色。請參閱https://docs.ansible.com/ansible/playbooks_roles.html#roles。您的when子句看起來像「when:inventory_hostname in groups ['OSGROUP_REDHAT72']」。然後,您可以爲您支持的每個發行版重複該行 – Petro026