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 configurersyslog
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 viacron
.
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.