# role_keepalived Rôle de déploiement de keepalived. ## Dépendance Le rôle *users* est requis afin que l'utilisateur dédié exécutant les scripts définis via `keepalived_track_scripts` soit créé. ## Variables ### keepalived_uid Identifiant unique permettant d'identifer les membres. *Valeur par défaut: aucune* ### keepalived_priority Priorité de la machine pour prendre l'IP de failover.
Ce chiffre doit être différent sur chaque machine portant le même identifiant unique. *Valeur par défaut: aucune* ### keepalived_interface Interface sur laquelle l'IP de failover sera montée. *Valeur par défaut: aucune* ### keepalived_mail_to Adresse mail sur laquelle envoyer les alertes. *Valeur par défaut: aucune* ### keepalived_mail_from Adresse mail source depuis laquelle partent les alertes.
Le serveur d'envoi (smtp) est défini par défaut sur localhost. *Valeur par défaut: aucune* ### keepalived_ipv4 Adresse IPv4 de failover. *Valeur par défaut: aucune* ### keepalived_ipv6 Adresse IPv6 de failover. *Valeur par défaut: aucune* ### keepalived_peers 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. *Valeur par défaut: aucune* ### keepalived_track_processes Liste de processus devant fonctionner pour que le membre conserve ou puisse prendre l'IP de failover. *Valeur par défaut: aucune* ## Exemples Dans les exemples ci-dessous, j'utilise aussi le rôle *nftables* afin d'installer et configurer le pare-feu logiciel éponyme. ### host_vars/infra-gw-2315a.nyx.ykn.local.yml ```yaml --- # BEGIN role_ifupdown ifupdown_interfaces: - interface: eth0 ipv4: inet: static address: 192.168.50.250 mask: 24 dns: 192.168.50.11 192.168.50.16 ipv6: inet: static address: fd00:ff50::d250 mask: 64 dns: fd00:ff50::d011 fd00:ff50::d016 - interface: eth1 ipv4: inet: static address: 192.168.1.51 mask: 24 dns: 192.168.1.254 ipv6: inet: auto # END role_ifupdown ``` ### group_vars/gw.yml ```yaml --- # BEGIN role_users users: - name: keepalived_script comment: "Dedicated user for keepalived script" update_password: on_create password_lock: true shell: /bin/bash # END role_users # BEGIN role_nftables nftables_rules: - filename: keepalived rules: - ip saddr 192.168.50.250 accept - ip saddr 192.168.50.251 accept - ip saddr 192.168.50.252 accept # END role_nftables # BEGIN role_keepalived keepalived_ipv4: 192.168.50.254/24 keepalived_ipv6: fd00:ff50::d254/64 keepalived_uid: "{{ keepalived_ipv4 | split('.') | last | split('/') | first }}" keepalived_track_scripts: - name: check_nftables_service interval: 5 command: /usr/bin/systemctl is-active nftables.service # END role_keepalived ``` ### playbook.yml ```yaml --- - name: Déployer les passerelles réseau hosts: gateways vars: primary_interface: "{{ ifupdown_interfaces | first }}" keepalived_priority: "{{ 255 - (primary_interface.ipv4.address | split('.') | last | int) }}" keepalived_interface: "{{ primary_interface.interface }}" roles: - name: users - name: nftables - name: keepalived ```