You've already forked role_keepalived
							
							
		
			
				
	
	
		
			171 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 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.
 | 
						|
 | 
						|
*<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*
 | 
						|
 | 
						|
### keepalived_ipv6
 | 
						|
 | 
						|
Adresse IPv6 de failover.
 | 
						|
 | 
						|
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
 | 
						|
 | 
						|
### keepalived_peers
 | 
						|
 | 
						|
Passer en unicast en utilisant cette liste d'IP.
 | 
						|
 | 
						|
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
 | 
						|
 | 
						|
### keepalived_scripts_path
 | 
						|
 | 
						|
Emplacement où les scripts de keepalived seront déployés.
 | 
						|
 | 
						|
*<span style="text-decoration: underline">Valeur par défaut:</span> aucune*
 | 
						|
 | 
						|
### keepalived_notify_{master,backup,fault,stop}
 | 
						|
 | 
						|
Booléen permettant d'activer ou non le script en fonction de l'état de keepalived.<br>
 | 
						|
Les scripts sont déployés dans `<keepalived_scripts_path>/notify_{master,backup,fault,stop}.sh`.
 | 
						|
 | 
						|
*<span style="text-decoration: underline">Valeur par défaut:</span> `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.
 | 
						|
 | 
						|
*<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
 | 
						|
```
 |