-
-
Save SEJeff/5825897 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
This enables us to call the minions and search for a specific role | |
""" | |
import logging | |
# Import salt libs | |
import salt.utils | |
import salt.payload | |
log = logging.getLogger(__name__) | |
def get_roles(role, *args, **kwargs): | |
""" | |
Send the informer.is_role command to all minions | |
""" | |
ret = [] | |
nodes = __salt__['mine.get']('*', 'grains.item') | |
print "-------------------------------> NODES {0}".format(nodes) | |
for name, node_details in nodes.iteritems(): | |
name = _realname(name) | |
roles = node_details.get('roles', []) | |
if role in roles: | |
ret.append(name) | |
return ret | |
def get_node_grain_item(name, item): | |
"""Get the details of a node by the name nodename""" | |
name = _realname(name) | |
node = __salt__['mine.get'](name, 'grains.item') | |
print "NODE DETAILS ------> {0}: {1}".format(name, node[name]) | |
return node[name][item] | |
def all(): | |
"""Get all the hosts and their ip addresses""" | |
ret = {} | |
nodes = __salt__['mine.get']('*', 'grains.item') | |
for name, node_details in nodes.iteritems(): | |
if 'ec2_local-ipv4' in node_details: | |
ret[_realname(name)] = node_details['ec2_local-ipv4'] | |
else: | |
ip = __salt__['mine.get'](name, 'network.ip_addrs')[name][0] | |
print "-----------------------------> {0}".format(ip) | |
ret[_realname(name)] = ip | |
return ret | |
def _realname(name): | |
"""Basically a filter to get the 'real' name of a node""" | |
if name == 'master': | |
return 'saltmaster' | |
else: | |
return name |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% for name, ip in salt['informer.all']().iteritems() %} | |
{{ name }}_host: | |
host.present: | |
- ip: {{ ip }} | |
- name: {{ name }} | |
{% endfor %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
master: {{ pillar['salt']['master'] }} | |
id: {{ grains['id'] }} | |
log_file: /var/log/salt/minion | |
log_level: {{ pillar['salt'].get('log_level', 'debug') }} | |
log_fmt_logfile: '%(asctime)-15s salt-minion[%(process)d] %(name)s: %(message)s' | |
log_datefmt_logfile: '%b %d %H:%M:%S' | |
grains: | |
environment: {{ grains.get('environment', 'development') }} | |
location: {{ grains.get('location', 'vagrant') }} | |
mine_functions: | |
network.ip_addrs: | |
- eth0 | |
- eth1 | |
disk.usage: [] | |
grains.item: | |
- roles | |
mine_interval: 60 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment