Skip to main content

ansible-rsyslog-backup-playbook

Pour configurer un playbook Ansible qui installe et configure rsyslog sur une machine Debian GNU/Linux 12 (bookworm) et met en place une sauvegarde automatique tous les 24 heures, vous pouvez suivre les étapes suivantes.

1. Structure du répertoire du playbook

Voici une structure de répertoire typique pour ce playbook :

ansible-rsyslog-backup/
├── inventory
├── playbook.yml
├── roles
│ ├── rsyslog
│ │ ├── tasks
│ │ │ └── main.yml
│ │ └── handlers
│ │ └── main.yml
│ └── backup
│ ├── tasks
│ │ └── main.yml
│ └── handlers
│ └── main.yml
└── templates
└── rsyslog.conf.j2

2. Fichier inventory

Le fichier inventory contient la liste des hôtes sur lesquels le playbook sera exécuté.

[servers]
server1 ansible_host=192.168.1.10
server2 ansible_host=192.168.1.11

3. Fichier playbook.yml

Le fichier playbook.yml est le point d'entrée du playbook.

---
- name: Configure rsyslog and automatic backup
hosts: servers
become: yes
roles:
- rsyslog
- backup

4. Rôle rsyslog

roles/rsyslog/tasks/main.yml

Ce fichier contient les tâches pour installer et configurer rsyslog.

---
- name: Install rsyslog
apt:
name: rsyslog
state: present
update_cache: yes

- name: Configure rsyslog
template:
src: rsyslog.conf.j2
dest: /etc/rsyslog.conf
owner: root
group: root
mode: '0644'
notify: Restart rsyslog

- name: Ensure rsyslog is enabled and running
service:
name: rsyslog
state: started
enabled: yes

roles/rsyslog/handlers/main.yml

Ce fichier contient les handlers pour redémarrer rsyslog après une modification de configuration.

---
- name: Restart rsyslog
service:
name: rsyslog
state: restarted

templates/rsyslog.conf.j2

Ce fichier est un template Jinja2 pour la configuration de rsyslog.

# rsyslog configuration file

#### MODULES ####

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support

#### GLOBAL DIRECTIVES ####

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

#### RULES ####

*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log

5. Rôle backup

roles/backup/tasks/main.yml

Ce fichier contient les tâches pour configurer une sauvegarde automatique tous les 24 heures.

---
- name: Create backup directory
file:
path: /backup
state: directory
owner: root
group: root
mode: '0755'

- name: Install cron
apt:
name: cron
state: present
update_cache: yes

- name: Ensure cron is enabled and running
service:
name: cron
state: started
enabled: yes

- name: Add backup script
copy:
dest: /usr/local/bin/backup.sh
content: |
#!/bin/bash
BACKUP_DIR="/backup"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
tar -czf "$BACKUP_DIR/backup-$TIMESTAMP.tar.gz" /etc /var/log
owner: root
group: root
mode: '0755'

- name: Schedule backup every 24 hours
cron:
name: "Daily backup"
minute: "0"
hour: "0"
job: "/usr/local/bin/backup.sh"

roles/backup/handlers/main.yml

Ce fichier contient les handlers pour redémarrer le service cron si nécessaire.

---
- name: Restart cron
service:
name: cron
state: restarted

6. Exécution du playbook

Pour exécuter le playbook, utilisez la commande suivante :

ansible-playbook -i inventory playbook.yml

Explication

  • rsyslog : Le rôle rsyslog installe et configure rsyslog pour la journalisation des logs.
  • backup : Le rôle backup crée un script de sauvegarde qui archive les répertoires /etc et /var/log dans un fichier .tar.gz et planifie son exécution tous les jours à minuit via cron.

Conclusion

Ce playbook Ansible permet de configurer rsyslog et de mettre en place une sauvegarde automatique tous les 24 heures sur une machine Debian GNU/Linux 12 (bookworm). Vous pouvez l'adapter en fonction de vos besoins spécifiques.