tag1consulting.borgbackup
Borgバックアップロール
これは、Luc StroobantとDieter Verhelstによって元々作成されたhttps://github.com/FiaasCo/borgbackupのフォークです。このフォークはTag1 Consulting, Inc.によって維持されています。
このロールは、borgbackupサーバーとクライアントにBorgバックアップをインストールします。ロールには、クライアントでの使い方を簡単にするためのラッパースクリプト「borg-backup」が含まれています。サポートされているオプションには、borg-backup info | init | list | backup | mountがあります。Automysqlbackupがインストールされている場合、バックアップ前のコマンドとして実行されます。 このロールは、rsync.netやHetznerストレージボックスなどのBorgサーバーを使用した自己ホスト型およびオフサイト型のバックアップストレージをサポートしています。
削除からバックアップを保護するために、追加のみのリポジトリを構成することが可能です。
このロールを実行するには、Ansible 2.4以上が必要です。
Ansible Galaxy
このロールは、Ansible Galaxyにおけるtag1consulting.borgbackup
です。このロールをプレイブックで使用するには、requirements.txt
ファイルに以下を追加してください:
# https://github.com/tag1consulting/ansible-role-borgbackup
- src: "tag1consulting.borgbackup"
必要な変数
インベントリにborgbackup_serversというグループを定義し、1つ以上のホストを指定します。追加のみのモードを有効にし、安全なホストからバックアップを削除したい場合は、borgbackup_managementグループが必要です。
[borgbackup_servers]
backup1.fiaas.co
[borgbackup_management]
supersecurehost
バックアップエンドポイントと保持期間のために、グループまたはホスト変数を定義します:
borgbackup_servers:
- fqdn: backup1.fiaas.co
user: borgbackup
type: normal
home: /backup/
pool: repos
options: ""
- fqdn: yourhost.rsync.net
user: userid
type: rsync.net
home: ""
pool: repos
options: "--remote-path=borg1"
- fqdn: username.your-storagebox.de
user: username
type: hetzner
home: ""
pool: repos
options: ""
borgbackup_retention:
hourly: 12
daily: 7
weekly: 4
monthly: 6
yearly: 1
警告: item.homeの末尾に/が必要です。
各ホストのためにborg_passphraseを定義します。 host_vars/client1:
borgbackup_passphrase: Ahl9EiNohr5koosh1Wohs3Shoo3ooZ6p
デフォルトでは、このロールは/etc/cron.d/borg-backupにcronジョブを作成し、毎日ランダムな時間の0時から5時の間のランダムな分にrootとして実行されます。必要に応じてデフォルト値を上書きします:
borgbackup_client_user: root
borgbackup_cron_day: "*"
borgbackup_cron_minute: "{{ 59|random }}"
borgbackup_cron_hour: "{{ 5|random }}"
必要に応じてborgbackup_client_userを上書きします。例えば、暗号化されたホームディレクトリを持つラップトップの場合、そのホームディレクトリのユーザーとしてバックアップを実行する必要があります。
追加のみのリポジトリを望む場合は、ホストまたはグループ変数でborgbackup_appendonly: Trueを設定します。その場合、borgbackup_management_stationでborg pruneスクリプトを構成するホスト名を定義することができます。管理ステーションだけが(すべての)クライアントの古いバックアップを削除する権限を持ちます。これにより、--append-only sshキーオプションでサーバが生成されます。 borgbackup_appendonly_repoconfigをTrueに設定すると、管理ステーションからバックアップを削除することも無効になります。(あるいは少なくとも: リポジトリを再構成するまで削除することはできず、これは現在pruneスクリプトでサポートされていません) 追加のみのモードの制限に注意してください: 削除されたバックアップは削除されたように見えますが、通常モードでリポジトリに何かが書き込まれるまで、トランザクションログでのみ削除されます)。
このロールのデフォルト設定を確認してください。バックアップに含まれるデフォルトの場所のリストがbackup_includeに含まれています。必要に応じてインベントリでこれを上書きしてください。
EPELパッケージからBorgをインストールする
Borgは、変数を設定することでEPELパッケージからインストールできます:
borgbackup_install_from_pkg: true
成功させるために、EPELリポジトリが存在する必要があります。
geerlingguy.repo-epel
ロールを使用してEPELリポジトリをインストールするには、以下を設定します:
borgbackup_install_epel: true
使い方
サーバーとクライアントにBorgを設定します:
ansible-playbook -i inventory/test backup.yml -l backup1.fiaas.co
ansible-playbook -i inventory/test backup.yml -l client1.fiaas.co
さらなる情報
Install Borg backup server and client (with rsync.net server support)
ansible-galaxy install tag1consulting.borgbackup