geerlingguy.backup
Rôle Ansible : Sauvegarde pour Serveurs Simples
Sauvegardez les serveurs Linux avec une solution simple basée sur Rsync et Cron.
Exigences
Il est nécessaire d'installer :
- rsync
- cron
MySQL ou une base de données compatible avec MySQL doit être installée si vous souhaitez activer les sauvegardes de bases de données MySQL.
On suppose également que vous avez un serveur quelque part qui peut accepter des données de sauvegarde via Rsync, et sur ce serveur de sauvegarde, vous devez installer rsync
, et configurer des comptes avec une authentification SSH permettant à ce rôle de livrer des sauvegardes dans un répertoire spécifique via SSH.
Variables du Rôle
Les variables disponibles sont listées ci-dessous, avec des valeurs par défaut (voir defaults/main.yml
) :
backup_cron_job_state: présent
backup_hour: "3"
backup_minute: "00"
Contrôle si le script de sauvegarde est appelé via un travail cron géré. Vous devez étaler les horaires de sauvegarde parmi les serveurs afin que votre serveur de sauvegarde ne reçoive pas une grande quantité de données en même temps.
backup_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}"
Utilisateur sous lequel les tâches de sauvegarde s'exécuteront.
backup_path: /home/{{ backup_user }}/backups
Chemin vers lequel la configuration des sauvegardes sera stockée. En règle générale, vous devriez utiliser un compte utilisateur spécial pour les sauvegardes, mais vous pouvez le configurer sur n'importe quel compte ayant l'accès approprié aux répertoires que vous devez sauvegarder.
backup_directories:
- /home/{{ backup_user }}/domains
- /home/{{ backup_user }}/repositories
Répertoires à sauvegarder. {{ backup_user }}
doit avoir un accès en lecture à ces répertoires. Chaque répertoire sera synchronisé avec le serveur de sauvegarde via une commande rsync
séparée dans le script de sauvegarde.
backup_exclude_items:
- .DS_Store
- cache
- tmp
Éléments à exclure des sauvegardes. Chaque item sera ajouté comme une nouvelle ligne dans un fichier d'exclusions utilisé par la commande de sauvegarde rsync
. Lisez cet article pour une explication du fonctionnement de l'option --exclude
.
backup_identifier: id_ici
backup_remote_connection: [email protected]
Options pour contrôler où la sauvegarde est livrée. On suppose que vous allez acheminer les sauvegardes vers un serveur de sauvegarde via SSH. La gestion des clés SSH et l'authentification doivent être gérées séparément de ce rôle.
backup_remote_base_path: "~/backups"
Le chemin complet sur le serveur de sauvegarde distant où les sauvegardes seront stockées (toutes les sauvegardes pour chaque serveur sont dans un répertoire nommé par le backup_identifier
).
backup_remote_host_name: ''
backup_remote_host_key: ''
Ajoutez les détails de la clé de l'hôte distant pour vous assurer que la clé de l'hôte est présente et qu'il n'y a pas d'erreurs de connexion SSH basées sur l'authentification par clé. Laissez vide si vous avez désactivé la vérification de la clé d'hôte ou si la clé d'hôte a déjà été ajoutée au serveur par un autre moyen.
backup_remote_connection_ssh_options: ''
Ajoutez des options de connexion SSH (par exemple -p [port]
), comme documenté dans le manuel de commande SSH.
backup_mysql: faux
backup_mysql_user: dbdump
backup_mysql_password: motdepasse
backup_mysql_credential_file: ''
Options pour sauvegarder des bases de données MySQL (ou compatibles MySQL). Notez que l'ansible_ssh_user
utilisé lors de l'exécution de ce rôle doit être capable d'ajouter des utilisateurs MySQL pour que cette fonctionnalité soit gérée par ce rôle.
Au lieu de créer un nouveau compte utilisateur MySQL, vous pouvez fournir un existant en utilisant backup_mysql_credential_file
, un fichier d'options comme documenté dans les Directives aux utilisateurs finales sur la sécurité des mots de passe.
Dépendances
Aucune.
Exemple de Playbook
- hosts: serveurs
vars:
backup_identifier: "{{ inventory_hostname|replace('.', '') }}"
backup_user: "backupuser"
backup_remote_connection: [email protected]
backup_hour: "1"
backup_minute: "15"
backup_mysql: faux
backup_directories:
- /etc/myapp
- /var/myapp/data
- /home/monutilisateur
roles:
- geerlingguy.backup
Licence
MIT / BSD
Informations sur l'Auteur
Ce rôle a été créé en 2017 par Jeff Geerling, auteur de Ansible pour DevOps.
Backup for Simple Servers.
ansible-galaxy install geerlingguy.backup