geerlingguy.backup
Ansibleロール: シンプルサーバー用バックアップ
LinuxサーバーをシンプルなRsyncとCronを使った方法でバックアップします。
要件
以下のソフトウェアをインストールする必要があります:
- rsync
- cron
MySQLやMySQL互換のデータベースを使用する場合は、MySQLのバックアップを有効にするためにインストールが必要です。
また、Rsyncを介してバックアップデータを受け取れるサーバーが必要です。このバックアップサーバーにもrsync
をインストールし、SSH認証を使ってこのロールがバックアップを特定のディレクトリに送るためのアカウントを設定する必要があります。
ロール変数
使用できる変数は以下の通りで、デフォルト値が含まれています(defaults/main.yml
を参照):
backup_cron_job_state: present
backup_hour: "3"
backup_minute: "00"
バックアップスクリプトが管理されたcronジョブを介して呼び出されるかどうかを制御します。バックアップの時間をサーバー間で分散させて、バックアップサーバーに大量のデータが一度に来ないようにしましょう。
backup_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}"
バックアップジョブが実行されるユーザーです。
backup_path: /home/{{ backup_user }}/backups
バックアップ設定が保存されるパスです。一般的には、特別なバックアップユーザーアカウントを使用しますが、バックアップが必要なディレクトリへの適切なアクセス権を持つアカウントを設定することも可能です。
backup_directories:
- /home/{{ backup_user }}/domains
- /home/{{ backup_user }}/repositories
バックアップするディレクトリです。{{ backup_user }}
にはこれらのディレクトリへの読み取りアクセスが必要です。各ディレクトリはバックアップスクリプト内の別々のrsync
コマンドでバックアップサーバーに同期されます。
backup_exclude_items:
- .DS_Store
- cache
- tmp
バックアップから除外するアイテムです。各アイテムは、バックアップrsync
コマンドで使用される除外リストファイルに新しい行として追加されます。--exclude
オプションの使い方についてはこの記事を参照してください。
backup_identifier: id_here
backup_remote_connection: [email protected]
バックアップが送信される場所を制御するオプションです。バックアップはSSHを介してバックアップサーバーに送信される想定です。SSHキーの管理と認証はこのロールとは別に行う必要があります。
backup_remote_base_path: "~/backups"
バックアップが保存されるリモートバックアップサーバー上の完全なパスです(各サーバーのバックアップはbackup_identifier
という名前のディレクトリ内に保存されます)。
backup_remote_host_name: ''
backup_remote_host_key: ''
ホストキーが存在することを確認し、ホストキー認証に基づくSSH接続エラーが発生しないように、リモートホストの鍵詳細を追加します。ホストキーの確認を無効にしている場合や、他の方法でホストキーがサーバーに追加されている場合は、空白のままにします。
backup_remote_connection_ssh_options: ''
SSH接続オプションを追加します(例: -p [port]
); 詳細はSSHコマンドマニュアルを参照してください。
backup_mysql: false
backup_mysql_user: dbdump
backup_mysql_password: password
backup_mysql_credential_file: ''
MySQL(またはMySQL互換)のデータベースをバックアップするためのオプションです。このロールを実行する際に使用されるansible_ssh_user
は、この機能を管理するためにMySQLユーザーを追加できる必要があります。
新しいMySQLユーザーアカウントを作成する代わりに、既存のアカウントをbackup_mysql_credential_file
で指定することができます。このオプションファイルについては、パスワードセキュリティのエンドユーザーガイドラインを参照してください。
依存関係
なし。
サンプルプレイブック
- hosts: servers
vars:
backup_identifier: "{{ inventory_hostname|replace('.', '') }}"
backup_user: "backupuser"
backup_remote_connection: [email protected]
backup_hour: "1"
backup_minute: "15"
backup_mysql: false
backup_directories:
- /etc/myapp
- /var/myapp/data
- /home/myuser
roles:
- geerlingguy.backup
ライセンス
MIT / BSD
作者情報
このロールは2017年にJeff Geerlingによって作成されました。Ansible for DevOpsの著者です。
ansible-galaxy install geerlingguy.backup