Rôle de déploiement de keepalived.
Go to file
2024-05-07 00:47:00 +02:00
defaults [EVO] Nettoyer le playbook 2023-10-11 22:16:35 +02:00
handlers [FIX] Mauvais nom de rôle dans les entêtes 2023-04-12 17:28:52 +02:00
meta fix: Add a dependency to nftables 2024-05-07 00:47:00 +02:00
tasks [EVO] Nettoyer le playbook 2023-10-11 22:16:35 +02:00
templates fix: Add a dependency to nftables 2024-05-07 00:47:00 +02:00
.gitignore Initial commit 2023-04-12 11:44:29 +00:00
LICENSE Initial commit 2023-04-12 11:44:29 +00:00
README.md [EVO] Ajouter les scripts de notifications 2023-05-02 15:18:09 +02:00

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_notify_script_enabled

Booléen permettant d'activer le script de notification.
Le script est déployé dans /etc/keepalived/notify.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

---

# 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

---

# 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

---

- 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