Skip to content

Instantly share code, notes, and snippets.

@bentwire
Created September 25, 2015 20:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bentwire/e6a972e1df257c16a17e to your computer and use it in GitHub Desktop.
Save bentwire/e6a972e1df257c16a17e to your computer and use it in GitHub Desktop.
# These are the interfaces and the ip index of that interface we are binding to.
{% set bind_interfaces = { 'lo': 0, 'eth1': 0 } %}
{% set master_interface = [ 'eth1', 0 ] %}
{% set name = grains.get('host', None) %}
{% set product, function, cluster, dc, env, num = name.split('-') %}
{% set nodes = {} %}
{% set minions = salt['saltutil.runner']('mine.get', tgt=product~'-redis-'~cluster~'-'~dc~'-'~env~'-*', fun="network.interfaces") %}
{# set minions = salt['mine.get'](product~'-redis-'~cluster~'-'~dc~'-'~env~'-*', 'network.interfaces', expr_form='glob') #}
{% for id, val in minions.items() %}
{% do nodes.update({ id: val }) %}
{% endfor %}
{% set master = nodes | dictsort | first %}
{% set quorum = nodes | length - 1 %}
{% set master_name, master_net = master %}
{% set master_ip = master_net[master_interface[0]]['inet'][master_interface[1]]['address'] %}
{% set is_master = (master_name == grains.id) %}
redis:
cluster:
{% for nid, val in nodes.items() %}
{% set prod, fun, clus, dc, env, node = nid.split('-') %}
{{ nid }}:
cluster_id: {{prod}}-{{fun}}-{{clus}}-{{dc}}-{{env}}
bind_ips:
{% for port, index in bind_interfaces.items() %}
- {{ val[port]['inet'][index]['address'] }}
{% endfor %}
{% endfor %}
master: {{ master_name }}
master_ip: {{ master_ip }}
is_master: {{ is_master }}
quorum: {{ quorum }}
use_ppa: True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment