gantsign.backup
Ansibleロール: バックアップ
ファイルやディレクトリのバックアップと復元を行うロールです。
rsyncを使用しますが、ローカルにマウントされたバックアップドライブでの使用を想定しています。
プロビジョニング中に、このロールは以前にバックアップされたファイルやディレクトリを復元します。
OSが再起動されると、5分ごとに増分バックアップを行い、シャットダウン時にもバックアップが行われます。
バックアップは、元のディレクトリの単純なミラーです。
以前のファイルバージョンは破棄されます。主な目的は、ローカル開発VMの再構築間でファイルを保持することです。
もしファイルを失ったり置き換えたりすることができない場合は、バージョン管理のあるリモートバックアップソリューションを使用してください。
このロールは主にユーザーのホームディレクトリの内容をバックアップおよび復元するために設計されています。
要求事項
Ansible >= 2.9
Linuxディストリビューション
Debian系
Ubuntu
- Bionic (18.04)
- Focal (20.04)
注意: 他のバージョンも動作する可能性がありますが、テストは行われていません。
ロール変数
以下の変数を変更することで、このロールの動作が変わります:
# バックアップを行う頻度(分単位)
backup_frequency_minutes: 5
# バックアップ/復元するファイルの所有ユーザー
backup_user: # 必須
# バックアップするファイルがあるソースディレクトリ(/で終わる必要があります)
backup_src: # 必須
# バックアップするファイルの宛先ディレクトリ(/で終わる必要があります)
backup_dest: # 必須
# 含める/除外するファイル/ディレクトリのrsyncフィルター
backup_filter: |
!
# すべてを含める
+ /*
# バックアップスクリプト用ディレクトリ
backup_script_dir: '~/.backup'
# cronで使用する名前
backup_cron_name: backup
# systemdサービスで使用する名前
backup_service_name: backup
例としてのプレイブック
以下はシンプルな例です:
- hosts: servers
roles:
- role: gantsign.backup
backup_user: example_username
backup_src: /home/example_username/
backup_dest: /mnt/backup/example_username/
backup_filter: |
# フィルターをリセット
!
# ファイル/ディレクトリを含める
+ /include_me
# サブディレクトリを含める(他のサブディレクトリを除外する場合のみ必要)
+ /include_me/me_as_well
# me_as_well以外を除外
- /include_me/*
# ファイル/ディレクトリ名で除外
- tmp
# その他すべてを除外
- /*
実際のプレイブックの例:
- hosts: servers
roles:
- role: gantsign.backup
backup_user: vagrant
backup_src: /home/vagrant/
backup_dest: /var/persistent/home/vagrant/
backup_filter: |
!
+ /.atom
+ /.atom
+ /.atom/config.cson
- /.atom/*
+ /.bash_history
+ /.config
+ /.config/Code
+ /.config/Code/User
+ /.config/Code/User/settings.json
- /.config/Code/User/*
- /.config/Code/*
- /.config/*
+ /.gitconfig
+ /.gnupg
+ /.m2
- /.m2/repository
- /.m2/wrapper
+ /.ssh
- /.ssh/authorized_keys
+ /workspace
+ /.zsh_history
- target/*
- build/*
- node_modules
- /*
GantSignの他のロール
GantSignの他のロールはAnsible Galaxyで見つけることができます。
開発とテスト
このプロジェクトは、開発とテストの支援のためにMoleculeを使用しています。
このロールはTestinfraとpytestを使用してユニットテストが行われています。
開発やテストを行うためには、以下をインストールする必要があります:
上記のインストールは難しい場合があるため、このプロジェクトにはMolecule Wrapperが含まれています。
Molecule Wrapperは、Moleculeとその依存関係(Linux以外)をインストールし、指定されたコマンドでMoleculeを実行するシェルスクリプトです。
Molecule Wrapperを使用してこのロールをテストするには、プロジェクトのルートから以下のコマンドを実行します:
./moleculew test
注意: いくつかの依存関係にはsudo
権限が必要です。
ライセンス
MIT
著者情報
ジョン・フリーマン
GantSign Ltd.
会社番号: 06109112 (イングランド登録)