summaryrefslogtreecommitdiff
path: root/data/templates
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2021-04-16 09:04:22 -0500
committerChristian Poessinger <christian@poessinger.com>2021-09-30 23:28:25 +0200
commit3c73edd96568b77aa0efc60a70babeea5d5515b4 (patch)
tree9435191af877dffc5930af84298d66d9c8f9dc2b /data/templates
parent51bdfc7e04b96dfe0cb59756c83ab176efb27993 (diff)
downloadvyos-1x-3c73edd96568b77aa0efc60a70babeea5d5515b4.tar.gz
vyos-1x-3c73edd96568b77aa0efc60a70babeea5d5515b4.zip
vrrp: T3877: backport handlers to solve "default rfc3768-compatibility" issue
Do not create rfc3768-compatibility interfaces by default because of wrong Jinja2 syntax. Backporting the entire system makes it easier in the future to additional bugfixes.
Diffstat (limited to 'data/templates')
-rw-r--r--data/templates/vrrp/keepalived.conf.tmpl124
1 files changed, 67 insertions, 57 deletions
diff --git a/data/templates/vrrp/keepalived.conf.tmpl b/data/templates/vrrp/keepalived.conf.tmpl
index 6b0f8e58e..7b8f7cb09 100644
--- a/data/templates/vrrp/keepalived.conf.tmpl
+++ b/data/templates/vrrp/keepalived.conf.tmpl
@@ -12,84 +12,94 @@ global_defs {
notify_fifo_script /usr/libexec/vyos/system/keepalived-fifo.py
}
-{% for group in groups %}
-{% if group.health_check_script is defined and group.health_check_script is not none %}
-vrrp_script healthcheck_{{ group.name }} {
- script "{{ group.health_check_script }}"
- interval {{ group.health_check_interval }}
- fall {{ group.health_check_count }}
+{% if group is defined and group is not none %}
+{% for name, group_config in group.items() if group_config.disable is not defined %}
+{% if group_config.health_check is defined and group_config.health_check.script is defined and group_config.health_check.script is not none %}
+vrrp_script healthcheck_{{ name }} {
+ script "{{ group_config.health_check.script }}"
+ interval {{ group_config.health_check.interval }}
+ fall {{ group_config.health_check.failure_count }}
rise 1
}
-{% endif %}
-
-vrrp_instance {{ group.name }} {
- {{ '# ' ~ group.description if group.description is defined }}
+{% endif %}
+vrrp_instance {{ name }} {
+{% if group_config.description is defined and group_config.description is not none %}
+ # {{ group_config.description }}
+{% endif %}
state BACKUP
- interface {{ group.interface }}
- virtual_router_id {{ group.vrid }}
- priority {{ group.priority }}
- advert_int {{ group.advertise_interval }}
-{% if group.preempt is defined and group.preempt is not none %}
- preempt_delay {{ group.preempt_delay }}
-{% else %}
+ interface {{ group_config.interface }}
+ virtual_router_id {{ group_config.vrid }}
+ priority {{ group_config.priority }}
+ advert_int {{ group_config.advertise_interval }}
+{% if group_config.no_preempt is not defined and group_config.preempt_delay is defined and group_config.preempt_delay is not none %}
+ preempt_delay {{ group_config.preempt_delay }}
+{% elif group_config.no_preempt is defined %}
nopreempt
-{% endif %}
-{% if group.peer_address is defined and group.peer_address is not none %}
- unicast_peer { {{ group.peer_address }} }
-{% endif %}
-{% if group.hello_source is defined and group.hello_source is not none %}
-{% if group.peer_address is defined and group.peer_address is not none %}
- unicast_src_ip {{ group.hello_source }}
-{% else %}
- mcast_src_ip {{ group.hello_source }}
{% endif %}
-{% endif %}
-{% if group.use_vmac is defined and group.peer_address is defined %}
- use_vmac {{ group.interface }}v{{ group.vrid }}
+{% if group_config.peer_address is defined and group_config.peer_address is not none %}
+ unicast_peer { {{ group_config.peer_address }} }
+{% endif %}
+{% if group_config.hello_source_address is defined and group_config.hello_source_address is not none %}
+{% if group_config.peer_address is defined and group_config.peer_address is not none %}
+ unicast_src_ip {{ group_config.hello_source_address }}
+{% else %}
+ mcast_src_ip {{ group_config.hello_source_address }}
+{% endif %}
+{% endif %}
+{% if group_config.rfc3768_compatibility is defined and group_config.peer_address is defined %}
+ use_vmac {{ group_config.interface }}v{{ group_config.vrid }}
vmac_xmit_base
-{% elif group.use_vmac is defined %}
- use_vmac {{ group.interface }}v{{ group.vrid }}
-{% endif %}
-{% if group.auth_password is defined and group.auth_password is not none %}
+{% elif group_config.rfc3768_compatibility is defined %}
+ use_vmac {{ group_config.interface }}v{{ group_config.vrid }}
+{% endif %}
+{% if group_config.authentication is defined and group_config.authentication is not none %}
authentication {
- auth_pass "{{ group.auth_password }}"
- auth_type {{ group.auth_type }}
+ auth_pass "{{ group_config.authentication.password }}"
+{% if group_config.authentication.type == 'plaintext-password' %}
+ auth_type PASS
+{% else %}
+ auth_type {{ group_config.authentication.type | upper }}
+{% endif %}
}
-{% endif %}
-{% if group.virtual_addresses is defined and group.virtual_addresses is not none %}
+{% endif %}
+{% if group_config.virtual_address is defined and group_config.virtual_address is not none %}
virtual_ipaddress {
-{% for addr in group.virtual_addresses %}
+{% for addr in group_config.virtual_address %}
{{ addr }}
-{% endfor %}
+{% endfor %}
}
-{% endif %}
-{% if group.virtual_addresses_excluded is defined and group.virtual_addresses_excluded is not none %}
+{% endif %}
+{% if group_config.virtual_address_excluded is defined and group_config.virtual_address_excluded is not none %}
virtual_ipaddress_excluded {
-{% for addr in group.virtual_addresses_excluded %}
+{% for addr in group_config.virtual_address_excluded %}
{{ addr }}
-{% endfor %}
+{% endfor %}
}
-{% endif %}
-{% if group.health_check_script is defined and group.health_check_script is not none %}
+{% endif %}
+{% if group_config.health_check is defined and group_config.health_check.script is defined and group_config.health_check.script is not none %}
track_script {
- healthcheck_{{ group.name }}
+ healthcheck_{{ name }}
}
-{% endif %}
+{% endif %}
}
-{% endfor %}
+{% endfor %}
+{% endif %}
-{% if sync_groups is defined and sync_groups is not none %}
-{% for sync_group in sync_groups %}
-vrrp_sync_group {{ sync_group.name }} {
+{% if sync_group is defined and sync_group is not none %}
+{% for name, group_config in sync_group.items() if group_config.disable is not defined %}
+vrrp_sync_group {{ name }} {
group {
-{% for member in sync_group.members %}
+{% if group_config.member is defined and group_config.member is not none %}
+{% for member in group_config.member %}
{{ member }}
-{% endfor %}
+{% endfor %}
+{% endif %}
}
-{% if sync_group.conntrack_sync %}
- notify_master "/opt/vyatta/sbin/vyatta-vrrp-conntracksync.sh master {{ sync_group.name }}"
- notify_backup "/opt/vyatta/sbin/vyatta-vrrp-conntracksync.sh backup {{ sync_group.name }}"
- notify_fault "/opt/vyatta/sbin/vyatta-vrrp-conntracksync.sh fault {{ sync_group.name }}"
+{% if conntrack_sync_group is defined and conntrack_sync_group == name %}
+{% set vyos_helper = "/usr/libexec/vyos/vyos-vrrp-conntracksync.sh" %}
+ notify_master "{{ vyos_helper }} master {{ name }}"
+ notify_backup "{{ vyos_helper }} backup {{ name }}"
+ notify_fault "{{ vyos_helper }} fault {{ name }}"
{% endif %}
}
{% endfor %}