role_keepalived/README.md

165 lines
4.0 KiB
Markdown
Raw Normal View History

2023-04-12 12:09:46 +00:00
# role_keepalived
2023-04-12 11:44:29 +00:00
2023-04-12 12:09:46 +00:00
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.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
### keepalived_priority
Priorité de la machine pour prendre l'IP de failover.<br>
Ce chiffre doit être différent sur chaque machine portant le même identifiant unique.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
### keepalived_interface
Interface sur laquelle l'IP de failover sera montée.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
### keepalived_mail_to
Adresse mail sur laquelle envoyer les alertes.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
### keepalived_mail_from
Adresse mail source depuis laquelle partent les alertes.<br>
Le serveur d'envoi (smtp) est défini par défaut sur localhost.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
### keepalived_ipv4
Adresse IPv4 de failover.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
2023-04-12 14:58:17 +00:00
### keepalived_ipv6
2023-04-12 12:09:46 +00:00
Adresse IPv6 de failover.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
2023-04-21 12:28:05 +00:00
### keepalived_peers
Passer en unicast en utilisant cette liste d'IP.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
### keepalived_notify_script_enabled
Booléen permettant d'activer le script de notification.<br>
Le script est déployé dans `/etc/keepalived/notify.sh`.
*<span style="text-decoration: underline">Valeur par défaut:</span> `false`*
2023-04-12 12:09:46 +00:00
### 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.
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
### keepalived_track_processes
Liste de processus devant fonctionner pour que le membre conserve ou puisse prendre l'IP de failover.
*<span style="text-decoration: underline">Valeur par défaut:</span> 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
```