geerlingguy.backup

Ansibleロール: シンプルサーバー用バックアップ

CI

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の著者です。

プロジェクトについて

Backup for Simple Servers.

インストール
ansible-galaxy install geerlingguy.backup
ライセンス
mit
ダウンロード
17k
所有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns