diff --git a/README.md b/README.md
index c2eea88..7e7133d 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,19 @@ Passer en unicast en utilisant cette liste d'IP.
*Valeur par défaut: aucune*
+### keepalived_scripts_path
+
+Emplacement où les scripts de keepalived seront déployés.
+
+*Valeur par défaut: aucune*
+
+### keepalived_notify_{master,backup,fault,stop}
+
+Booléen permettant d'activer ou non le script en fonction de l'état de keepalived.
+Les scripts sont déployés dans `/notify_{master,backup,fault,stop}.sh`.
+
+*Valeur par défaut: `false`*
+
### keepalived_track_scripts
Liste de script dont le code retour doit être à zéro pour que le membre conserve ou puisse prendre l'IP de failover.
diff --git a/defaults/main.yml b/defaults/main.yml
index 6b2b021..e7a4a4e 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -13,6 +13,13 @@ keepalived_ipv6: ""
keepalived_peers: []
+keepalived_scripts_path: ""
+
+keepalived_notify_master: false
+keepalived_notify_backup: false
+keepalived_notify_fault: false
+keepalived_notify_stop: false
+
keepalived_track_scripts: []
# Exemple:
# - name: check_haproxy_8080
diff --git a/meta/main.yml b/meta/main.yml
index 5f58a50..a2647e9 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -14,3 +14,10 @@ galaxy_info:
dependencies:
- role: users
+ vars:
+ users:
+ - name: keepalived_script
+ comment: "Dedicated user for keepalived script"
+ update_password: on_create
+ password_lock: true
+ shell: /bin/bash
diff --git a/tasks/main.yml b/tasks/main.yml
index d0a1d7a..47365f3 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,7 +1,7 @@
---
# tasks file for keepalived
-- name: Installer keepalived
+- name: Installer le paquet
ansible.builtin.apt:
name: keepalived
become: true
@@ -15,3 +15,29 @@
dest: /etc/keepalived/keepalived.conf
become: true
notify: Redémarrer keepalived.service
+
+- name: Créer le dossier de déploiement des scripts
+ ansible.builtin.file:
+ path: /srv/keepalived
+ owner: root
+ group: root
+ mode: u=rwX,g=rX,o=
+ state: directory
+ when: keepalived_scripts_path | length > 0
+ become: true
+
+- name: Déployer les scripts
+ ansible.builtin.copy:
+ src: keepalived/notify_{{ item | split('_') | last }}.sh
+ dest: "{{ keepalived_scripts_path }}"
+ mode: u=rx,g=rx,o=
+ when:
+ - keepalived_scripts_path | length > 0
+ - vars[item]
+ loop:
+ - keepalived_notify_master
+ - keepalived_notify_backup
+ - keepalived_notify_fault
+ - keepalived_notify_stop
+ become: true
+ notify: Redémarrer keepalived.service
diff --git a/templates/keepalived.j2 b/templates/keepalived.j2
index e739cf9..a71eb24 100644
--- a/templates/keepalived.j2
+++ b/templates/keepalived.j2
@@ -58,6 +58,19 @@ vrrp_instance VIP_{{ keepalived_uid }} {
}
{% endif %}
+{% if keepalived_notify_master %}
+ notify_master {{ keepalived_scripts_path }}/notify_master.sh
+{% endif %}
+{% if keepalived_notify_backup %}
+ notify_backup {{ keepalived_scripts_path }}/notify_backup.sh
+{% endif %}
+{% if keepalived_notify_fault %}
+ notify_fault {{ keepalived_scripts_path }}/notify_fault.sh
+{% endif %}
+{% if keepalived_notify_stop %}
+ notify_stop {{ keepalived_scripts_path }}/notify_stop.sh
+{% endif %}
+
{% if keepalived_track_scripts | length > 0 %}
track_script {
{% for script in keepalived_track_scripts %}