geerlingguy.backup

Rôle Ansible : Sauvegarde pour Serveurs Simples

CI

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.

Installer
ansible-galaxy install geerlingguy.backup
Licence
mit
Téléchargements
17k
Propriétaire
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns