diff --git a/library/roles/keepalived/defaults/main.yml b/library/roles/keepalived/defaults/main.yml
index e0a286d7..bdcd8aa4 100644
--- a/library/roles/keepalived/defaults/main.yml
+++ b/library/roles/keepalived/defaults/main.yml
@@ -21,6 +21,9 @@ keepalived_script1_name: keepalived_check_service_status
# We set haproxy as the default because most of our keepalived use is haproxy related
keepalived_service_to_check: 'haproxy'
keepalived_script1_check: '/bin/pidof {{ keepalived_service_to_check }}'
+keepalived_instance1_name: 'VRRP_1'
+keepalived_interface1_name: '{{ ansible_default_ipv4.interface }}'
+keepalived_initial_state: 'MASTER'
keepalived_inst_priority: 100
keepalived_vrouter_id: 51
keepalived_non_local_bind: True
@@ -28,6 +31,7 @@ keepalived_non_local_bind: True
keepalived_enable_script_security: True
keepalived_script_username: keepalived_script
keepalived_script_user_home: '/var/lib/keepalived'
+keepalived_runtime_dir: /run/keepalived
keepalived_nagios_check: False
keepalived_notify_script: /usr/local/bin/keepalived_notify
@@ -43,15 +47,16 @@ keepalived_scripts:
weight: 2
keepalived_instances:
- - name: VI_1
- interface: eth0
- state: MASTER
+ - name: '{{ keepalived_instance1_name }}'
+ interface: '{{ keepalived_interface1_name }}'
+ state: '{{ keepalived_initial_state }}'
vrouter_id: '{{ keepalived_vrouter_id }}'
notify: '{{ keepalived_notify_script }}'
priority: '{{ keepalived_inst_priority }}'
+ nopreempt: True
v_addr:
- '{{ keepalived_floating_ip1 }}'
track_script:
- '{{ keepalived_script1_name }}'
- #track_interface:
- # - eth0
+ track_interface:
+ - '{{ keepalived_interface1_name }}'
diff --git a/library/roles/keepalived/tasks/main.yml b/library/roles/keepalived/tasks/main.yml
index da47b165..87e928bb 100644
--- a/library/roles/keepalived/tasks/main.yml
+++ b/library/roles/keepalived/tasks/main.yml
@@ -7,18 +7,22 @@
- name: Install the keepalived package
apt: name={{ keepalived_pkgs }} state={{ keepalived_pkg_state }} cache_valid_time=1800
- - name: Install the user that the keepalived scripts will run under
- user: name={{ keepalived_script_username }} home={{ keepalived_script_user_home }} createhome=no shell=/usr/sbin/nologin system=yes
-
tags: keepalived
when:
- keepalived_install | bool
- ansible_distribution_file_variety == "Debian"
- block:
+ - name: Install the user that the keepalived scripts will run under
+ user: name={{ keepalived_script_username }} home={{ keepalived_script_user_home }} createhome=no shell=/usr/sbin/nologin system=yes
+
- name: Create the keepalive script user directory
file: dest={{ keepalived_script_user_home }} state=directory owner={{ keepalived_script_username }} group={{ keepalived_script_username }} mode=0750
+ - name: Create the tmpfile entry for the keepalived runtime directory
+ template: src=tmpfile_keepalived.conf.j2 dest=/usr/lib/tmpfiles.d/keepalived.conf owner=root group=root mode=0644
+ when: ansible_service_mgr == 'systemd'
+
- name: Install the keepalived configuration
template: src=keepalived.conf.j2 dest=/etc/keepalived/keepalived.conf owner=root group=root mode=0600
notify: restart keepalived
diff --git a/library/roles/keepalived/templates/keepalived_check_service_status.sh.j2 b/library/roles/keepalived/templates/keepalived_check_service_status.sh.j2
index 1955f423..6ed36e5d 100644
--- a/library/roles/keepalived/templates/keepalived_check_service_status.sh.j2
+++ b/library/roles/keepalived/templates/keepalived_check_service_status.sh.j2
@@ -1,6 +1,6 @@
#!/bin/bash
{% if ansible_distribution_file_variety == "Debian" and ansible_distribution_major_version == '18' %}
-am_i_master=$( grep MASTER /var/lib/keepalived/keepalive.state )
+am_i_master=$( grep MASTER {{ keepalived_runtime_dir }}/keepalive.state )
keepalive_master=$?
if [ $keepalive_master -eq 0 ] ; then
diff --git a/library/roles/keepalived/templates/keepalived_notify.sh.j2 b/library/roles/keepalived/templates/keepalived_notify.sh.j2
index 6654c17f..531ad0db 100644
--- a/library/roles/keepalived/templates/keepalived_notify.sh.j2
+++ b/library/roles/keepalived/templates/keepalived_notify.sh.j2
@@ -13,7 +13,7 @@ RETVAL=0
{{ keepalived_notify_extra_params }}
{% endif %}
-echo "$TYPE $NAME is in $STATE state" > {{ keepalived_script_user_home }}/keepalive.state
+echo "$TYPE $NAME is in $STATE state" > {{ keepalived_runtime_dir }}/keepalive.state
exit $RETVAL
diff --git a/library/roles/keepalived/templates/tmpfile_keepalived.conf.j2 b/library/roles/keepalived/templates/tmpfile_keepalived.conf.j2
new file mode 100644
index 00000000..c6666b18
--- /dev/null
+++ b/library/roles/keepalived/templates/tmpfile_keepalived.conf.j2
@@ -0,0 +1 @@
+d {{ keepalived_runtime_dir }} 0775 {{ keepalived_script_username }} {{ keepalived_script_username }}