From d187472f279208e2ef2051525d4a29e2b8b8974a Mon Sep 17 00:00:00 2001 From: Timo Makinen Date: Fri, 19 Mar 2021 17:09:17 +0000 Subject: [PATCH] network: Add keepalived support --- roles/network/handlers/main.yml | 4 ++++ roles/network/tasks/RedHat.yml | 22 ++++++++++++++++++++++ roles/network/templates/keepalived.conf.j2 | 22 ++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 roles/network/templates/keepalived.conf.j2 diff --git a/roles/network/handlers/main.yml b/roles/network/handlers/main.yml index dd99c44..b38da59 100644 --- a/roles/network/handlers/main.yml +++ b/roles/network/handlers/main.yml @@ -7,4 +7,8 @@ - block: - name: reload network manager connections command: nmcli c reload + - name: restart keepalived + service: + name: keepalived + state: restarted when: ansible_os_family == "RedHat" diff --git a/roles/network/tasks/RedHat.yml b/roles/network/tasks/RedHat.yml index 9578883..93a9c07 100644 --- a/roles/network/tasks/RedHat.yml +++ b/roles/network/tasks/RedHat.yml @@ -15,3 +15,25 @@ group: "{{ ansible_wheel }}" notify: reload network manager connections with_items: "{{ network_interfaces }}" + +- block: + - name: install keepalived + package: + name: keepalived + state: installed + - name: create keepalived config + template: + dest: /etc/keepalived/keepalived.conf + src: keepalived.conf.j2 + mode: 0600 + owner: root + group: "{{ ansible_wheel }}" + notify: restart keepalived + - name: enable keepalived + service: + name: keepalived + state: started + enabled: true + when: + - network_vip_interfaces is defined + - network_vip_interfaces != [] diff --git a/roles/network/templates/keepalived.conf.j2 b/roles/network/templates/keepalived.conf.j2 new file mode 100644 index 0000000..ffa0a32 --- /dev/null +++ b/roles/network/templates/keepalived.conf.j2 @@ -0,0 +1,22 @@ +! {{ ansible_managed }} + +global_defs { + +} + +{% for vip in network_vip_interfaces %} +vrrp_instance VI_{{ vip.vhid }} { + interface {{ vip.device }} + virtual_router_id {{ vip.vhid }} +{% if vip.priority is defined %} + priority {{ vip.priority }} +{% endif %} + authentication { + auth_type AH + auth_pass {{ vip.pass }} + } + virtual_ipaddress { + {{ vip.ipaddr }} + } +} +{% endfor %}