alphanodes.backup
Ansibleロール: バックアップ
DebianおよびUbuntuサーバー上で、ファイル、MySQLデータベース、PostgreSQLデータベースの毎日、毎週、毎月のバックアップを実行します。
バックアップのローテーションは設定可能で、たとえば祖父-父-子の方式を使用できます。
依存関係
なし
インストール
Ansible 2+
ansible galaxy CLIを使用して:
ansible-galaxy install alphanodes.backup
ロール変数
利用可能な変数は以下にリストされています。デフォルト値も含まれています(defaults/main.yml
を参照):
backup_dir: /srv/backups
バックアップ用のディレクトリです。このディスクパーティションに十分なディスクスペースがあることを確認してください。変換の問題がないように、引用符を使用してください(例: to_nice_yamlと共に)。
backup_dir_mode: '0755'
backup_dir
のディレクトリ権限。
backup_dir_owner: root
backup_dir
のディレクトリ所有者。
backup_dir_group: root
backup_dir
のディレクトリグループ。
backup_max_days: 7
日次バックアップセットの保存日数です。これにより、backup_max_days
の日数分のみが保存されます。古いセットは自動的に削除されます。値は1以上である必要があります。
backup_max_weeks: 1
週次バックアップセットの保存週間数です。これにより、backup_max_weeks
週間分のみが保存されます。古いセットは自動的に削除されます。値は1以上である必要があります。週次バックアップは毎週の初日(通常は月曜日)に作成されます。この日はこのバックアップだけが作成され、日次バックアップは作成されません(重複するため)。
backup_max_months: 1
月次バックアップセットの保存月数です。これにより、backup_max_months
月分のみが保存されます。古いセットは自動的に削除されます。値は1以上である必要があります。月次バックアップは毎月の初日に作成されます。この日はこのバックアップだけが作成され、日次または週次バックアップは作成されません(重複するため)。
backup_remote_host: ''
backup_remote_transfer
を使用してバックアップを同期するためのホスト名。
backup_remote_port: ''
backup_remote_transfer
を使用してバックアップを同期するためのポート。
backup_remote_dir: ''
backup_remote_host
のリモートディレクトリ(backup_remote_transfer
に使用)。
backup_remote_excludes:
- '*.journal'
- '.nfs*'
- '*.tar'
これらのファイルはリモートホストへの同期から除外されます。これは、backup_remote_transfer
がrsync
のときのみ使用されます。
backup_rsync_options: '-avz --delete'
backup_remote_transfer
でrsync
を使用するためのrsyncオプション。
backup_remote_transfer: rsync
同期のタイプ。可能な値はrsync
またはlftp
です。
backup_remote_user: ''
リモート同期のためのユーザー。これは、backup_remote_transfer
がlftp
のときのみ使用されます。
backup_remote_password: ''
リモート同期のためのパスワード。これは、backup_remote_transfer
がlftp
のときのみ使用されます。
backup_with_borg: ''
バックアップボーグを実行すべきか。
backup_db_dump_format: .sql.gz
未圧縮のSQLファイル(.sql)やbzip2(.bz2)、gzip(.gz)、xz用です。現在、主にMySQLダンプに使用されます。
backup_with_mysql: false
MySQL(MariaDB)バックアップダンプを実行します。すべてのデータベースは別々のファイルに保存されます。
backup_with_postgresql: false
PostgreSQLバックアップダンプを実行します。すべてのデータベースは別々のファイルに保存されます。
backup_with_mongodb: false
MongoDBバックアップダンプを実行します。すべてのデータベースは1つのアーカイブファイルに保存されます。
backup_mongodb_options: '--archive --gzip'
MongoDBダンプのオプション。
backup_mysql_db_excludes:
- performance_schema
- information_schema
- sys
backup_mysql_single_transaction: true
# backup_mysqldump_options: '--extended-insert=true --opt --single-transaction'
カスタムMySQLオプション(常に.sql.gzが使用されます)。設定すると、ネイティブのmysql_dump(ansibleなし)が使用されます。デフォルトでは設定されていません。
backup_postgresqldump_options: "--no-owner -Fc"
PostgreSQLダンプのオプション。
backup_create_hashfiles: false
すべてのバックアップセットのハッシュファイルを作成します。
backup_files_unsafe_writes: false
backup_files_unsafe_writes
がyesで、tarファイル作成中に変更されたファイルが見つかった場合、エラーは報告されません。tarは追加オプション--warning=no-file-removed --warning=no-file-changed --warning=no-file-ignored
で実行されます。このオプションは、各セットのunsafe_writes
で上書きできます。
backup_sets: []
ファイルバックアップのバックアップセット。name
はバックアップファイル名に使用されます。src
はバックアップするファイルのディレクトリです。unsafe_writes
はbackup_files_unsafe_writes
を上書きします。excludes
は、ファイルやディレクトリを除外するために使用できるリストです。
backup_one_per_day_limit: true
1日に1つのバックアップセットのみを作成します。同日の既存のバックアップセットは削除されます。
# sync_master: anything
sync_masterが定義されている場合、バックアップはスキップされます。レプリケーション環境で使用できます。
backup_skip_sync_clients: true
sync_masterが定義されている場合、これはsync_clientを意味します。
backup_pre_commands: []
バックアップダンプの前に実行するコマンドのリスト。
backup_post_commands: []
バックアップダンプ作成後に実行されるコマンドのリスト。
例のプレイブック
- hosts: サーバー名
vars:
backup_sets:
- name: etc
src: /etc
roles:
- alphanodes.backup
拡張例プレイブック
- hosts: サーバー名
vars:
backup_max_days: 14
backup_max_weeks: 4
backup_max_months: 6
backup_with_postgresql: true
backup_dir_mode: '0770'
backup_dir_group: postgres
backup_sets:
- name: etc
src: /etc
- name: jenkins
src: /var/lib/jenkins
unsafe_writes: true
excludes:
- builds
- workspace
roles:
- alphanodes.backup
ライセンス
GPLバージョン3
作者情報
このロールは2018年にAlphaNodesによって作成されました。
Run daily backups for files, MySQL databases and PostgreSQL databases
ansible-galaxy install alphanodes.backup