Search code examples
configuration-managementsalt-project

How to get a list of all salt minions in a template?


Basically I am creating a Salt state describing Munin server configuration and I need to get a list of all minions known to the master, something like this:

{% for host in pillar['munin_clients'] %}
[{{ host.fqdn }}]
    address {{ host.ip }}
    use_node_name yes
{% endfor %}

The only difference is that I don't want to use pillar for that, I need this list to be populated dynamically. ret.get_minions seems to be relevant but I can't make it work for some reason. What are my options?


Solution

  • I managed to achieve this using Salt Mine system (thanks to members of Salt-users Google group):

    {% for host, hostinfo in salt['mine.get']('*', 'network.interfaces').items() %}
    [{{ host }}]
        address {{ hostinfo['eth0']['inet'][0]['address'] if hostinfo['eth0'].has_key('inet') else hostinfo['br0']['inet'][0]['address'] }}
        use_node_name yes
    {% endfor %}
    

    I had to add

    mine_functions:
      network.interfaces: []
    

    to the end of /etc/salt/minion on every node to enable Salt Mine.