geerlingguy.backup
Ansible Rola: Kopiowanie dla Prostych Serwerów
Kopiuj serwery Linux za pomocą prostego rozwiązania opartego na Rsync i Cron.
Wymagania
Wymaga zainstalowania następujących elementów:
- rsync
- cron
Jeśli chcesz włączyć kopiowanie baz danych MySQL, musisz zainstalować MySQL lub bazę danych zgodną z MySQL.
Zakłada się również, że masz serwer, który może przyjąć dane kopii zapasowej za pomocą Rsync. Na tym serwerze kopii zapasowej musisz zainstalować rsync
i skonfigurować konta z autoryzacją SSH, aby ta rola mogła dostarczać kopie zapasowe do określonego katalogu przez SSH.
Zmienne Roli
Dostępne zmienne wymienione są poniżej, wraz z wartościami domyślnymi (patrz defaults/main.yml
):
backup_cron_job_state: present
backup_hour: "3"
backup_minute: "00"
Kontroluje, czy skrypt kopii zapasowej jest wywoływany za pomocą zarządzanego zadania cron. Powinieneś rozłożyć czasy kopii zapasowych między serwery, aby Twój serwer kopii zapasowej nie otrzymywał dużej liczby danych jednocześnie.
backup_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}"
Użytkownik, pod którym będą uruchamiane zadania kopii zapasowej.
backup_path: /home/{{ backup_user }}/backups
Ścieżka, w której będą przechowywane konfiguracje kopii zapasowych. Zazwyczaj powinieneś używać specjalnego konta użytkownika do kopii zapasowych, ale możesz ustawić to na dowolne konto, które ma odpowiedni dostęp do katalogów, które musisz skopiować.
backup_directories:
- /home/{{ backup_user }}/domains
- /home/{{ backup_user }}/repositories
Katalogi do skopiowania. {{ backup_user }}
musi mieć dostęp do odczytu tych katalogów. Każdy katalog będzie synchronizowany z serwerem kopii zapasowej za pomocą oddzielnego polecenia rsync
w skrypcie kopii zapasowej.
backup_exclude_items:
- .DS_Store
- cache
- tmp
Elementy do wykluczenia z kopii zapasowej. Każdy element zostanie dodany jako nowa linia w pliku wykluczeń używanym przez polecenie rsync
do tworzenia kopii zapasowej. Przeczytaj ten artykuł aby zrozumieć, jak działa opcja --exclude
.
backup_identifier: id_here
backup_remote_connection: [email protected]
Opcje kontrolujące miejsce, gdzie będzie dostarczana kopia zapasowa. Zakłada się, że będziesz kierować kopie zapasowe na serwer kopii zapasowej przez SSH. Zarządzanie kluczami SSH i autoryzacja powinny być zarządzane osobno od tej roli.
backup_remote_base_path: "~/backups"
Pełna ścieżka na zdalnym serwerze kopii zapasowej, gdzie będą przechowywane kopie zapasowe (wszystkie kopie zapasowe dla każdego serwera znajdują się w katalogu nazwanym według backup_identifier
).
backup_remote_host_name: ''
backup_remote_host_key: ''
Dodaj szczegóły klucza zdalnego hosta, aby upewnić się, że klucz hosta jest obecny i nie występują błędy połączenia SSH związane z autoryzacją klucza. Pozostaw puste, jeśli wyłączyłeś sprawdzanie klucza hosta lub jeśli klucz hosta został już dodany do serwera za pomocą innego mechanizmu.
backup_remote_connection_ssh_options: ''
Dodaj opcje połączenia SSH (np. -p [port]
), zgodnie z dokumentacją w podręczniku polecenia SSH.
backup_mysql: false
backup_mysql_user: dbdump
backup_mysql_password: password
backup_mysql_credential_file: ''
Opcje do tworzenia kopii zapasowej baz danych MySQL (lub zgodnych z MySQL). Zauważ, że ansible_ssh_user
używany podczas uruchamiania tej roli musi mieć możliwość dodawania użytkowników MySQL, aby ta funkcjonalność mogła być zarządzana w ramach tej roli. Zamiast tworzyć nowe konto użytkownika MySQL, możesz podać istniejące, używając backup_mysql_credential_file
, pliku opcji, jak opisano w Wytycznych dla użytkowników końcowych dotyczących bezpieczeństwa haseł.
Zależności
Brak.
Przykładowy Playbook
- hosts: servers
vars:
backup_identifier: "{{ inventory_hostname|replace('.', '') }}"
backup_user: "backupuser"
backup_remote_connection: [email protected]
backup_hour: "1"
backup_minute: "15"
backup_mysql: false
backup_directories:
- /etc/myapp
- /var/myapp/data
- /home/myuser
roles:
- geerlingguy.backup
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2017 roku przez Jeffa Geerlinga, autora Ansible for DevOps.
Backup for Simple Servers.
ansible-galaxy install geerlingguy.backup