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 %}