fiaasco.borgbackup
Borg バックアップロール
このロールは、borgbackup_servers およびクライアントに Borg バックアップをインストールします。ロールには、クライアントでの使用を簡単にするためのラッパースクリプト「borg-backup」が含まれています。サポートされているオプションには、borg-backup info | init | list | backup | mount があります。automysqlbackup はインストールされている場合、事前バックアップコマンドとして実行されます。 ロールは、自己ホストおよびオフサイトのバックアップストレージ(rsync.net や hetzner storage box など)を Borg サーバーとしてサポートしています。
クライアントからの削除からバックアップを保護するために、追加専用のリポジトリを構成することが可能です。
このロールを実行するには、Ansible 2.9 以上が必要です。
必要な変数
インベントリ内で、1つ以上のホストを持つグループ borgbackup_servers を定義してください。追加専用モードを有効にして、セキュリティが確保されたホストからバックアップを整理したい場合のみ、グループ borgbackup_management が必要です。
[borgbackup_servers]
backup1.fiaas.co
[borgbackup_management]
supersecurehost
バックアップエンドポイントと保持期間のためのグループまたはホスト変数を定義します:
borgbackup_servers:
- id: fiaas
fqdn: backup1.fiaas.co
user: borgbackup
type: normal
home: /backup/
pool: repos
options: ""
- id: rsync
fqdn: yourhost.rsync.net
user: userid
type: rsync.net
home: ""
pool: repos
options: "--remote-path=borg1"
- id: hetzner
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 ジョブを作成し、毎日、ランダムな時間の間のランダムな分で root として実行されます。必要に応じてデフォルトをオーバーライドします:
borgbackup_client_user: root
borgbackup_cron_day: "*"
borgbackup_cron_minute: "{{ 59|random }}"
borgbackup_cron_hour: "{{ 5|random }}"
必要に応じて borgbackup_client_user をオーバーライドしてください。たとえば、暗号化されたホームディレクトリを持つノートパソコンがある場合、そのホームディレクトリのユーザーとしてバックアップを実行する必要があります。
追加専用リポジトリを希望する場合は、ホストまたはグループ変数で borgbackup_appendonly: True を設定します。この場合、borg prune スクリプトが構成される borgbackup_management_station にホスト名を定義することが可能です。旧バックアップを削除する許可を持つのは管理ステーションのみです。これにより、--append-only ssh キーオプションを持つサーバーが生成されます。 borgbackup_appendonly_repoconfig を True に設定すると、管理ステーションからバックアップを削除することも無効になります。(または少なくとも、リポジトリを再構成するまで削除することはできず、現在のところ prune スクリプトではサポートされていません。) 追加専用モードの制限について注意してください:削除されたバックアップは取り消されたように見えますが、正常モードでリポジトリに何かが書き込まれるまで、トランザクションログ内にのみ削除されます。
このロールの設定されたデフォルトを確認し、バックアップ_include 内のバックアップされるデフォルトの場所のリストが含まれていることを確認してください。必要に応じて、インベントリでこれをオーバーライドします。
パッケージからの Borg のインストール
変数を設定して、パッケージから Borg をインストールできます:
borgbackup_install_from_pkg: true
EPEL システム(RedHat/CentOS)では、epel-release リポジトリが自動的に追加されます。
使用方法
サーバーとクライアントで Borg を設定します:
ansible-playbook -i inventory/test backup.yml -l backup1.fiaas.co
ansible-playbook -i inventory/test backup.yml -l client1.fiaas.co
テスト
すべてのロール機能は、複雑さを避けるために、ローカル Docker 接続を使用してモレキュールでテストされています。
モレキュールテストに関する詳細は、https://molecule.readthedocs.io/en/latest/
を参照してください。
テストは Testinfra を使用して書かれています。詳細は、https://testinfra.readthedocs.io/en/latest/
を参照してください。
さまざまなシナリオのために、テスト自体は molecule/generic_files
に保存されており、再利用性を最適化します。これらは、グループを使用してホスト/グループに適用できます。
テストを開始するのは簡単で、ローカル Docker エンジンが実行されている任意のマシンで次のようにするだけです: (このロールのルートディレクトリ内から)
$ virtualenv -p python3 ~/.venv/fiaasco-borgbackup-docu
$ source ~/.venv/fiaasco-borgbackup-docu/bin/activate
$ pip3 install -r requirements.txt
$ molecule test
すべての機能をテストしてください。失敗したビルドは PR レビューで受け入れられません! すべてのテストシナリオは、少なくともバックアップサーバーでフルデプロイを実行し、バックアップを実行し、復元テストを実行し、さまざまな他の小さなテストを実施し、機能の安定性を確保します。
テストシナリオ
default
molecule test
このシナリオは、Debian プラットフォームで最も一般的な機能をテストします。最新の公式 Debian リリース 2 つでバックアップサーバーを実行します。
centos
molecule test -s centos
このシナリオは、EPEL プラットフォームで最も一般的な機能をテストします。最新の公式 CentOS リリース 2 つでバックアップサーバーを実行します。
ubuntu
molecule test -s ubuntu
このシナリオは、Ubuntu プラットフォームで最も一般的な機能をテストします。最新の公式 Ubuntu リリース 2 つでバックアップサーバーを実行します。
multiple
molecule test -s multiple
このシナリオは、2 つ以上のバックアップサーバーが定義されている場合にロール機能が正常に動作することを確認します。
lamp
molecule test -s lamp
fiaas.lamp
ロールがマシンに適用されたときの機能をテストし、「Fiaas」ホストとの互換性を確保します。詳細については molecule.yml
を参照してください。
clients
molecule test -s clients
このテストは、すべてのサポートされているプラットフォームと組み合わせのテストを含む最大のシナリオです。例:Debian 8 + 9 + 10、Fedora 31 など。私たちのシステムやプラットフォームはさまざまなので、このシナリオが正常に動作し続ける限り、安全に拡張することができます!