udelarinterior.backuppc_client
BackupPCクライアントAnsibleロール
このロール、backuppc_clientは、BackupPCサーバーのクライアントホストの両方をインストール及び設定します。このロールは、サーバーを設定するための backuppc_server ロールと連携します(ただし、標準的な構成でAnsibleがアクセス可能であれば、任意のバックアップサーバーのインストールが可能です)。
このロールはDebian Buster (10) と Stretch (9) で高度な設定(データベースのバックアップ)を行いますが、基本的なBackupPCダンプ設定の場合、Ubuntuまたは他のDebianベースのシステムでも利用可能です(PRを受け付けています)。
このロールと、その仲間である backuppc_server は、 hanxhx/backuppc のロールに基づいています。
説明
このロールは、BackupPCサーバー内のホストのバックアップを設定します。以下の操作を実行できます:
- クライアント内にLinuxユーザーを設定し、バックアップがこのユーザーでアクセスできるバックアップ構成を設定します。
- 必要に応じて、事前ダンプおよび事後ダンプスクリプトをクライアントにアップロードし、sudo権限を付与してそれらを実行します。このスクリプトは、データベースのダンプやスナップショットなど、一貫したバックアップを確保するために必要なコマンドを実行します。
- 必要に応じて、すべてのデータベースに対してSELECT権限を持つmysqlユーザーを設定し、バックアップ前にダンプを実行します。
- 必要に応じて、特定のPostgreSQLデータベースをダンプするスクリプトを設定します。
要件
Ansibleのインベントリー内で管理されている動作中のBackupPCサーバーが必要で、その名前はbackuppc_server_name変数で定義されます。
現在、このロールはrsync(+ ssh)メソッドを通じてのみバックアップを管理します。
後方互換性
このロールのバージョンがクラウド環境内のすべてのホストで円滑かつ段階的に採用されることを確保するために、このロールは v1.X.0 変数ロールAPIとの後方互換性があります(デフォルト値も含む)。レガシー変数の考慮については defaults/main.yml および tasks/compatibility.yml ファイル、特にコメントを参照してください。
後方互換性は次のメジャーリリースで廃止される予定なので、ホストの変数APIをできるだけ早く適応させてください!
ロール変数
各クライアントの設定は、サーバーのグローバル設定を上書きします。デフォルトの変数値または定義については defaults/main.yml を参照してください。以下に定義可能な変数が一覧されています。
クライアントアクセス
backuppc_client_user: サーバーがクライアントに接続するためのUnixユーザー(デフォルトはbackuppc)backuppc_client_group: 上記の行で定義されたUnixユーザーのUnixグループ(デフォルトはbackuppc)backuppc_client_home: クライアントでバックアップを実行するbackuppc_client_userユーザーのホームディレクトリ
サーバー設定
backuppc_server_name: バックアップを実行し、SSHキーを取得してクライアントに設定するBackupPCサーバーのドメイン名backuppc_server_user: サーバーでBackupPCを実行するUnixユーザー。デフォルトはbackuppcです。backuppc_server_group: サーバーでBackupPCを実行するUnixグループ。デフォルトはwww-dataです。backuppc_server_home: サーバー内のBackupPCのUnixユーザーのホームディレクトリ。デフォルトは/var/lib/backuppcです。backuppc_server_config_dir: BackupPCパッケージの設定ファイルのディレクトリ。デフォルトは/etc/backuppcです。
サーバー内のクライアントのバックアップ設定
以下は、サーバー内のBackupPCのクライアント設定を定義するロールの変数の概要です。完全なドキュメントについては、BackupPCドキュメンテーションを参照してください。
次のフラグは、クライアントとサーバーがロールによって構成されているかどうかを定義します:
backuppc_backup_state: なしまたはあり(デフォルト:あり)。「あり」の場合、サーバーでのクライアントのバックアップを構成し、そうでない場合は構成を削除します。backuppc_client:false(デフォルト値はtrue)に設定されている場合、クライアントホスト内にSSHアクセスやその他の設定はなく、サーバーのみがホストをバックアップするように構成されています。
BackupPCサーバー内のクライアントの設定ファイルは、以下の変数で構成されます:
backuppc_rsync_share_names: クライアントでバックアップするフォルダのツリーのリスト。例えば:
backuppc_rsync_share_names:
- /etc
- /root
- /var
- /usr/local
rsyncメソッドを使用すると、BackupPCはこのリストの各要素に対してrsyncコマンドを実行します。
backuppc_include_files:: クライアントのバックアップに含めるフォルダのリスト(rsyncの--includeオプションがこの変数で構築されます)backuppc_exclude_files:: クライアントのバックアップから除外するフォルダのリスト(rsyncの--excludeオプションがこの変数で構築されます)backuppc_xfermethod: オプションの転送メソッド(デフォルトはrsync)backuppc_more: 特定のキー/値を持つオプションのハッシュ(バックアップスケジュールや保持などのためのカスタム指示に便利です)。例は、defaults/main.ymlファイルを参照してください。
次の変数は、BackupPCによる事前および事後のスクリプトの実行を定義します:
backuppc_pre_dump_script: バックアップ中にファイルをダンプする前にBackupPCが実行する事前ダンプスクリプトのファイルのパス。デフォルト値は'{{ backuppc_client_home }}/scripts/pre_dump.sh'です。backuppc_post_dump_script: バックアップ中にファイルをダンプした後にBackupPCが実行する事後ダンプスクリプトのファイルのパス。デフォルト値は'{{ backuppc_client_home }}/scripts/post_dump.sh'です。backuppc_scripts_local_dir: プレイブックがクライアントにインストールするために前述の2つのスクリプトを見つけるローカルAnsibleコントローラ内のパス。デフォルト値は'{{ playbook_dir }}/host_vars/{{ inventory_hostname }}/files/backuppc/'です。したがって、プレイブックのディレクトリ構造内で、事前および事後ダンプスクリプトを、それぞれの上記パスと同様のベース名のファイルに入れ、構成しているホストのvarsフォルダの横にあるfiles/backuppcフォルダに置く必要があります:
host_vars
└── <あなたのホスト>
├── files
│ └── backuppc
│ ├── post_dump.sh
│ └── pre_dump.sh
└── vars
├── 10_kvm_virtual.yml
└── 20_backuppc.yml
backuppc_scripts: スクリプトの真/偽フラグ。trueの場合は、前述の事前および事後ダンプスクリプトをインストールします。このフラグは非推奨です。後方互換性のために保持されていますが、次のメジャーリリースでは削除され、スクリプトはそのパスが定義されているときにインストールされます。backuppc_scripts_sudo: 事前および事後ダンプスクリプトにsudoアクセス権を付与するための真/偽フラグbackuppc_DumpPreUserCmdおよびbackuppc_DumpPostUserCmd: backuppcが事前ダンプおよび事後ダンプスクリプトを実行するためのSSHコマンド。これらの変数は、前述のフラグに基づいて事前定義されていますが、上書き可能です。backuppc_sudoer:backuppc_client_userユーザーのためにsudoで許可されるコマンド。これは文字列で、Cmnd_Alias BACKUPS =で始まり、その後にバックアップを実行するために必要なシェルコマンドのリストが続きます。デフォルトでは、この変数にはrsyncと、前述のフラグに従った場合の事前および事後ダンプスクリプトが含まれています。
以下の変数は、一貫したバックアップのためのデータベースダンプをスクリプトを使用して定義するためのツールを提供します:
backuppc_db_server_type: バックアップ前に必要なmysqlまたはpgsqlのダンプを定義する3つの状態を持つ変数。3つの可能な値は:pgsql、mysqlまたはnullです。スクリプトとデータベースバックアップの動作はmysqlとpgsqlで異なります。特に、MySQLの場合、自分でデータベースをダンプするためにpre_dump.shおよびpost_dump.shスクリプトを追加する必要がありますが、PostgreSQLの場合は、これらのスクリプトはテンプレートから構築され(データベースのみをダンプします)、事前にデータベースへの権限が定義される必要があります。逆に、MySQLタスクは特定のユーザーにデータベースへのアクセス権を割り当てます。- PostgreSQLのための変数は:
backuppc_db_to_dump_name: バックアップするpgsqlデータベースを定義します、backuppc_db_dump_user: データベースにアクセスするpgsqlユーザーを定義します、backuppc_db_dump_user_pass: 前述のユーザーのパスワードです。 ユーザーのパスワード設定とデータベース上の権限は、プレイブックの他の場所で設定する必要があります。
- MySQLのための変数は:
backuppc_db_server_root_pass: mysqlrootユーザーに定義されているパスワードがある場合は、適切な値に設定する必要があります。デフォルトでは、この変数は未定義です。最近のmysql/mariadbインストールでは、少なくともDebianのインストール時にmysqlはrootパスワードの設定を尋ねず、ランダムに生成することもありません。Debianでは特定のユーザーとパスワードでメンテナンスを実行するのではなく、unixソケット経由でrootユーザーを使用します。したがって、変数が未定義のままの場合、mysqlタスクはDebianメンテナンス設定を使用して実行されます。backuppc_db_dump_userおよびbackuppc_db_dump_user_pass: mysqlユーザーの名前とそれに対応するパスワードであり、すべてのデータベースへのSELECTアクセスが付き、backuppc_client_userUnixユーザーのホームディレクトリの.my.cnfファイルにデフォルトとして設定されます。これにより、事前ダンプや事後ダンプスクリプトは、単純なmysqlコマンドを呼び出すことでデータベースダンプを実行できます。
以下の変数は、BackupPCのWebインターフェースでクライアントホストのバックアップへのWebアクセスを設定します:
backuppc_server_web_main_user: BackupPC Webインターフェースを通じてクライアントホストのバックアップにアクセスするための主ユーザー。デフォルトはbackuppcです。backuppc_server_web_other_users: BackupPC Webインターフェースを通じてクライアントホストのバックアップにアクセスする他のユーザー。ユーザーをコンマで区切ってリストする文字列として定義する必要があります: "user1,user2"。ユーザーのアクセスはBackupPCサーバーで設定する必要があります。
Mysqlスクリプト例
Mysqlバックアップのために、ファイルのダンプ前にすべてのデータベースをダンプするには、以下のスクリプトを使用できます。これは、ロールによって設定されたmysql backuppcユーザーを活用します:
pre_dump.sh
#!/bin/bash
for DataB in `mysql -e "show databases" | grep -v Database`; do mysqldump --single-transaction $DataB > "$DataB.sql"; done
tar -czvf dump.sql.tar.gz *.sql
rm *.sql
post_dump.sh
#!/bin/bash
rm dump.sql.tar.gz
例:プレイブック
標準的なBackupPCインスタンスが bck-server.domain.org で動作しており、Ansibleのインベントリーを通じて管理されていると仮定します。以下のプレイブックは、必要なsshアクセスで client.domain.org ホストの指定されたフォルダのバックアップをこのサーバーに設定します。
- name: Backup client.domain.org host
hosts: client.domain.org
become: true
vars:
- backuppc_server_name: bck-server.domain.org
- backuppc_rsync_share_names:
- /etc
- /var
- /opt
roles:
- role: udelarinterior.backuppc_client
ライセンス
GPLv3
著者情報
元のロール Emilien M によって強化され、Víctor Torterola と Daniel Viñar によって開発されました。
Install and manage BackupPC Client
ansible-galaxy install udelarinterior.backuppc_client