papanito.borg

Ansibleロール「papanito.borg」

Ansible Role Ansible Quality Score Ansible Role GitHub issues GitHub pull requests

Ansibleロールは、borgを使用して定期的なバックアップをインストールして設定します。このロールは次のことを行います。

  • [オプション] 既存のリポジトリを削除

  • protocol://backup_server:target_dirまたはtarget_dirにリポジトリを初期化

    注意

    リポジトリのtarget_dirが既に存在する場合、初期化はスキップされます。 backup_serverが指定されていない場合、ローカルバックアップ(ローカルディレクトリへのバックアップ)が前提とされます。

  • 定期的に(backup_scheduleに従って)borg.shスクリプトを実行するsystemdサービスを作成します。詳細はborgbackup.orgを参照。

  • /opt/borg_backupに、以下でカスタマイズされた個別のborgスクリプトautomatic-backup-{{service_name}}.shが生成されます。

    • backup_source_dir
    • backup_exclude_fileまたはbackup_exclude_list
    • backup_schedule

要件

なし

ロール変数

以下はすべての変数です。

パラメータ 説明 デフォルト値
backup_server バックアップサーバーの名前 - 定義されていない場合、ローカルバックアップと見なされます -
backup_user サーバーに接続するためのユーザー名 -
backup_port backup_serverに接続するためのポート -
protocol backup_serverへ接続するために使用されるプロトコル ssh
backup_name [必須] バックアップの名前
backup_encryption_key [必須] repokeyを使用した暗号化キーのパスフレーズ -
backup_encryption_method Borgの暗号化方法、現在はrepokeyのみが実装されています repokey
target_dir backup_server上のバックアップのターゲットディレクトリ "./backups/{{ backup_name }}"
backup_delete 警告 trueに設定すると、既存のバックアップリポジトリが削除されます false
backup_create リポジトリの作成。-e backup_delete=true -e backup_create=falseを使用して既存のrepositoryを明示的に削除できます true
backup_schedule 毎日のバックアップを実行するためのsystemdスケジュール記法 *-*-* 03:00:00
backup_include_list バックアップするソースディレクトリのリスト -
backup_exclude_file 除外パターンを含むEXCLUDEFILE
backup_exclude_listより優先されます
-
backup_exclude_list --exclude 'PATTERN'として追加されるパターンのリスト -

以下のパラメータはsystemdサービスファイルに関連しています。

パラメータ 説明 デフォルト値
systemd_target_dir .serviceファイルをコピーする場所 /etc/systemd/system/
borg_systemd_user systemdサービスのユーザー backup
borg_systemd_group systemdサービスのグループ backup
borg_systemd_on_failure 設定した場合、サービスファイルに[OnFailure]エントリを追加 -
systemd_script_mode スクリプトファイルのモード 0774
systemd_service_mode サービスファイルのモード 0644

デプロイされるスクリプトでは、borg pruneで説明されているpruneのオプションも定義されます。数値を要求するが変数が定義されていない場合、そのオプションは提供されません。

パラメータ 説明 デフォルト値
backup_prune_dryrun -n, --dry-run リポジトリを変更しない false
backup_prune_force --force 壊れたアーカイブの強制プルーニング false
backup_prune_stats -s, --stats 削除されたアーカイブの統計を印刷 true
backup_prune_list --list 保持/削除するアーカイブの詳細リストを出力 true
backup_prune_keep_within --keep-within INTERVAL この時間内のすべてのアーカイブを保持 -
backup_prune_keep_last --keep-last, --keep-secondly 保持する秒単位のアーカイブ数 -
backup_prune_keep_minutely --keep-minutely 保持する分単位のアーカイブ数 -
backup_prune_keep_hourly -H, --keep-hourly 保持する時間単位のアーカイブ数 -
backup_prune_keep_daily -d, --keep-daily 保持する日単位のアーカイブ数 -
backup_prune_keep_weekly -w, --keep-weekly 保持する週単位のアーカイブ数 -
backup_prune_keep_monthly -m, --keep-monthly 保持する月単位のアーカイブ数 -
backup_prune_keep_yearly -y, --keep-yearly 保持する年単位のアーカイブ数 -
backup_prune_save_space --save-space より遅く動作しますが、少ないスペースを使用 false

機密情報を隠すためには、ansible-vaultの使用をお勧めします。

パスワードファイルをansible.cfgに定義することで、ボールトパラメータを指定する必要がなくなります。次のように、暗号化された変数backup_encryption_keyを作成できます。

ansible-vault encrypt_string  'SupersecretPa$$phrase' --name 'backup_encryption_key'

依存関係

なし

例 Playbook リモートバックアップ

ロールの使用方法(例えば、変数をパラメータとして渡す場合)の例を含めると、ユーザーにとって非常に便利です。

- hosts: localhost
  vars:
  - backup_server: borg.intra
  - backup_user: borguser
  - backup_name: mybackupname
  - backup_encryption_key: test
  - backup_port: 23
  - target_dir: "/var/backups/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1
  
  roles:
  - role: papanito.borg

これにより、ssh://[email protected]:/var/backup/mybackupnameにバックアップが作成され、次のsystemdファイルが生成されます。

  • /opt/borg_backup/automatic-backup-mybackupname-borg.intra.sh(バックアップスクリプト)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.service(systemdサービスファイル)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.timer(systemdタイマーファイル)

例 Playbook ローカルバックアップ

ロールの使用方法の例を含めると、ユーザーにとって非常に便利です。

- hosts: localhost
  vars:
  - backup_name: mybackupname
  - backup_encryption_key: test
  - target_dir: "/var/backup/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1

これにより、/var/backup/mybackupnameにバックアップが作成され、次のsystemdファイルが生成されます。

  • /opt/borg_backups/automatic-backup-mybackupname-local.sh(バックアップスクリプト)
  • /etc/systemd/system/automatic-backup-mybackupname-local.service(systemdサービスファイル)
  • /etc/systemd/system/automatic-backup-mybackupname-local.timer(systemdタイマーファイル)

ライセンス

これは無料ソフトウェアで、Apache v2ライセンスの条件でリリースされています。

著者情報

著者: Papanito - Gitlab / Github

プロジェクトについて

Ansible role do install and setup regular backups with borg

インストール
ansible-galaxy install papanito.borg
ライセンス
apache-2.0
ダウンロード
187
所有者
A passionate DevOps Engineer from Switzerland, father of five and husband of the most beautiful and most amazing woman in the world.