diff --git a/keepalived/templates/keepalived.jinja b/keepalived/templates/keepalived.jinja index 57db711..081c8f7 100644 --- a/keepalived/templates/keepalived.jinja +++ b/keepalived/templates/keepalived.jinja @@ -5,229 +5,16 @@ # This file is managed by Salt. # Any changes will be overwritten. +{%- import_yaml 'keepalived/defaults.yaml' as keepalived_defaults %} +{%- set keepalived_final_values = salt.pillar.get( + 'keepalived', + default=keepalived_defaults, + merge=True) %} -#--------------------------------------------------------------------- -# Global settings -#--------------------------------------------------------------------- -global_defs { - notification_email { -{%- if 'notification_emails' in salt['pillar.get']('keepalived:global_defs') %} - {%- for email in salt['pillar.get']('keepalived:global_defs:notification_emails', []) %} - {{ email }} - {%- endfor %} -{%- endif %} - } - notification_email_from {{ salt['pillar.get']('keepalived:global_defs:notification_email_from', 'keepalived@'~salt['grains.get']('fqdn') ) }} - smtp_server {{ salt['pillar.get']('keepalived:global_defs:smtp_server', 'localhost') }} -{%- if 'smtp_connect_timeout' in salt['pillar.get']('keepalived:global_defs') %} - smtp_connect_timeout {{ salt['pillar.get']('keepalived:global_defs:smtp_connect_timeout') }} -{%- endif %} -} - -#--------------------------------------------------------------------- -# static network configuration -#--------------------------------------------------------------------- -# static ipaddresses -{%- if 'static_ipaddresses' in salt['pillar.get']('keepalived') %} -static_ipaddress { - {%- for address in salt['pillar.get']('keepalived:static_ipaddresses', {}).iteritems() %} - {{ address }} - {%- endfor %} -} -{%- endif %} - -# static routes -{%- if 'static_routes' in salt['pillar.get']('keepalived') %} -static_routes { - {%- for route in salt['pillar.get']('keepalived:static_routes', {}).iteritems() %} - {{ route}} - {%- endfor %} -} -{%- endif %} - -#--------------------------------------------------------------------- -# vrrp configuration -#--------------------------------------------------------------------- - -# vrrp scripts -{%- for script in salt['pillar.get']('keepalived:vrrp_scripts', {}).iteritems() %} -vrrp_script {{ script[1].get('name', script[0]) }} { - script "{{ script[1].get('script') }}" - interval {{ script[1].get('interval', '1') }} - weight {{ script[1].get('weight', '2') }} - {%- if 'fall' in script[1] %} - fall {{ script[1].get('fall') }} - {%- endif %} - {%- if 'rise' in script[1] %} - rise {{ script[1].get('rise') }} - {%- endif %} -} -{%- endfor %} - -# vrrp sync groups -{%- if 'vrrp_sync_groups' in salt['pillar.get']('keepalived') %} - {%- for syncgroup in salt['pillar.get']('keepalived:vrrp_sync_groups', {}).iteritems() %} -vrrp_sync_group {{ syncgroup[1].get('name', syncgroup[0]) }} { - group { - {%- for member in syncgroup[1].members %} - {{ member }} - {%- endfor%} - } - {%- if 'notify_master' in syncgroup[1] %} - notify_master {{ syncgroup[1].get('notify_master') }} - {%- endif %} - {%- if 'notify_backup' in syncgroup[1] %} - notify_backup {{ syncgroup[1].get('notify_backup') }} - {%- endif %} - {%- if 'notify_fault' in syncgroup[1] %} - notify_master {{ syncgroup[1].get('notify_fault') }} - {%- endif %} - {%- if 'notify' in syncgroup[1] %} - notify {{ syncgroup[1].get('notify') }} - {%- endif %} - {%- if 'smtp_alert' in syncgroup[1] %} - {%- if True == syncgroup[1].get('smtp_alert') %} - smtp_alert - {%- endif %} - {%- endif %} -} - {%- endfor %} -{%- endif %} - -# vrrp instance -{%- for instance in salt['pillar.get']('keepalived:vrrp_instances', {}).iteritems() %} -vrrp_instance {{ instance[1].get('name', instance[0]) }} { - {%- if 'use_vmac' in instance[1] %} - {%- if True == instance[1].get('use_vmac') %} - use_vmac - {%- endif %} - {%- endif %} - {%- if 'vmac_xmit_base' in instance[1] %} - {%- if True == instance[1].get('vmac_xmit_base') %} - vmac_xmit_base - {%- endif %} - {%- endif %} - {%- if 'native_ipv6' in instance[1] %} - {%- if True == instance[1].get('native_ipv6') %} - native_ipv6 - {%- endif %} - {%- endif %} - state {{ instance[1].get('state', 'BACKUP') }} - {%- if 'interface' in instance[1] %} - interface {{ instance[1].get('interface') }} - {%- endif %} - {%- if 'track_interfaces' in instance[1] %} - track_interface { - {%- for track_interface in instance[1].track_interfaces %} - {{ track_interface }} - {%- endfor%} - } - {%- endif %} - {%- if 'track_scripts' in instance[1] %} - track_script { - {%- for track_script in instance[1].track_scripts %} - {{ track_script }} - {%- endfor%} - } - {%- endif %} - {%- if 'dont_track_primary' in instance[1] and instance[1].get('dont_track_primary') %} - dont_track_primary - {%- endif %} - {%- if 'mcast_src_ip' in instance[1] %} - mcast_src_ip {{ instance[1].get('mcast_src_ip') }} - {%- endif %} - {%- if 'unicast_src_ip' in instance[1] %} - unicast_src_ip {{ instance[1].get('unicast_src_ip') }} - {%- endif %} - {%- if 'unicast_peers' in instance[1] %} - unicast_peer { - {%- for unicast_peer in instance[1].unicast_peers %} - {{ unicast_peer }} - {%- endfor%} - } - {%- endif %} - {%- if 'lvs_sync_daemon_interface' in instance[1] %} - lvs_sync_daemon_interface {{ instance[1].get('lvs_sync_daemon_interface') }} - {%- endif %} - {%- if 'garp_master_delay' in instance[1] %} - garp_master_delay {{ instance[1].get('garp_master_delay') }} - {%- endif %} - {%- if 'garp_master_repeat' in instance[1] %} - garp_master_repeat {{ instance[1].get('garp_master_repeat') }} - {%- endif %} - {%- if 'garp_master_refresh' in instance[1] %} - garp_master_refresh {{ instance[1].get('garp_master_refresh') }} - {%- endif %} - {%- if 'garp_master_refresh_repeat' in instance[1] %} - garp_master_refresh_repeat {{ instance[1].get('garp_master_refresh_repeat') }} - {%- endif %} - {%- if 'virtual_router_id' in instance[1] %} - virtual_router_id {{ instance[1].get('virtual_router_id') }} - {%- endif %} - {%- if 'priority' in instance[1] %} - priority {{ instance[1].get('priority') }} - {%- endif %} - {%- if 'advert_int' in instance[1] %} - advert_int {{ instance[1].get('advert_int') }} - {%- endif %} - authentication { - auth_type {{ instance[1].get('authentication').get('auth_type') }} - auth_pass {{ instance[1].get('authentication').get('auth_pass') }} - } - {%- if 'virtual_ipaddresses' in instance[1] %} - virtual_ipaddress { - {%- for virtual_ipaddress in instance[1].virtual_ipaddresses %} - {{ virtual_ipaddress }} - {%- endfor%} - } - {%- endif %} - {%- if 'virtual_ipaddresses_excluded' in instance[1] %} - virtual_ipaddress_excluded { - {%- for virtual_ipaddress_excluded in instance[1].virtual_ipaddresses_excluded %} - {{ virtual_ipaddress_excluded }} - {%- endfor%} - } - {%- endif %} - {%- if 'virtual_routes' in instance[1] %} - virtual_routes { - {%- for virtual_route in instance[1].virtual_routes %} - {{ virtual_route }} - {%- endfor%} - {%- if 'blackhole_addresses' in instance[1] %} - {%- for blackhole_address in instance[1].blackhole_addresses %} - blackhole {{ blackhole_address }} - {%- endfor%} - {%- endif %} - } - {%- endif %} - {%- if 'nopreempt' in instance[1] and instance[1].get('nopreempt') %} - nopreempt - {%- endif %} - {%- if 'notify_master' in instance[1] %} - notify_master {{ instance[1].get('notify_master') }} - {%- endif %} - {%- if 'notify_backup' in instance[1] %} - notify_backup {{ instance[1].get('notify_backup') }} - {%- endif %} - {%- if 'notify_fault' in instance[1] %} - notify_fault {{ instance[1].get('notify_fault') }} - {%- endif %} - {%- if 'notify_stop' in instance[1] %} - notify_stop {{ instance[1].get('notify_stop') }} - {%- endif %} - {%- if 'notify' in instance[1] %} - notify {{ instance[1].get('notify') }} - {%- endif %} - {%- if 'smtp_alert' in instance[1] %} - {%- if True == instance[1].get('smtp_alert') %} - smtp_alert - {%- endif %} - {%- endif %} -} -{%- endfor %} - -#--------------------------------------------------------------------- -# lvs configuration -#--------------------------------------------------------------------- -#this section has not been completed - +{%- macro config_entries(data) -%} + {%- if data is mapping -%} + {%- for entry_type in data|dictsort -%} +{{ entry_type }} + {%- endfor -%} + {%- endif -%} +{%- endmacro -%}