fuzzymistborn.autorestic
Autorestic/Restic インストーラー
これは、restic と autorestic をインストールし、設定するための Ansible ロールです。このロールのインスピレーションや基盤は、@IronicBadger に由来し、インストーラーや設定ファイルのコピー改善には @ItsNotGoodName に感謝しています。
ansible-galaxy install fuzzymistborn.autorestic
でインストールできます。
特徴
restic
とautorestic
の GO バイナリのインストールと設定。autorestic
の設定ファイルのコピー/更新。- 更新がある場合、バイナリを更新(バージョンが固定されていない場合)。
設定
このロールには、設定可能な変数がいくつかあります。
特定のバイナリのバージョンを固定するには、autorestic_pinned_ver
または restic_pinned_ver
を使えます。デフォルトでは、最新のバージョンを取得してインストールします。ロールが実行されるたびにバイナリが既に存在する場合、更新コマンドが実行されます。特定のバージョンに固定することで、この更新を無効にできます。以下は、バージョンを設定する場合の例です。
autorestic_download_latest_ver: false
autorestic_pinned_ver: 1.2.0
restic_download_latest_ver: false
restic_pinned_ver: 0.12.1
バージョンを固定すると、アップデートコマンドは実行されず、インストールされたバージョンが固定されたバージョンと一致しない場合のみバージョンが取得されます。
変更できる他の変数:
autorestic_config_user: root
autorestic_config_yaml: CHANGEME # autorestic の設定 (yaml)
autorestic_config_path: "{{ autorestic_user_directory }}/.autorestic.yml"
autorestic_config_mode: 0600
autorestic_config_owner: "{{ autorestic_config_user }}"
autorestic_config_group: "{{ autorestic_config_user }}"
autorestic_distro: linux_amd64
restic_distro: linux_amd64
restic_gh_url
, restic_install_directory
などの他の変数は、インストールをカスタマイズしたい場合を除いて変更することはお勧めしません。
正しい配布を見つけるためには、autorestic と restic のリリースページを参照してください。
Autorestic 設定ファイルの例
Autorestic の設定はデフォルトでルートのホームディレクトリにコピーされます。autorestic_config_user
変数を使って、他のユーザーのホームディレクトリに変更可能です。
以下は、利用可能なオプションをすべて示す例です。
autorestic_config_yaml:
locations:
docker:
from: '/opt/docker'
to:
- local
- b2_docker
backends:
local:
type: local
path: /backup
key: 123
b2_docker:
type: s3
path: 'b2_backend_url'
key: b2_password
env:
AWS_ACCESS_KEY_ID: 1234
AWS_SECRET_ACCESS_KEY: 1234abc
追加のドキュメントについては、公式ドキュメント をご覧ください。
GitHub API
このロールは、最新のリリースを確認するために GitHub API を利用しています。デフォルトでは、認証なしのリクエストを使用しており、これは GitHub によって 制限 されています(1時間あたり60リクエスト)。リクエストは発信元の IP アドレスに関連付けられます。ほとんどの使用ケースでは問題ありませんが、リクエスト制限に引っかかることがあるかもしれません。認証すれば、1時間あたり5,000リクエストが可能です。
認証するには、Personal Access Token を取得してください。トークンには、スコープを選択する必要はありません。その後、以下の変数を追加します。
github_api_user: fuzzymistborn
github_api_pass: YOUR_TOKEN
github_api_auth: yes
これで完了です!
TODO
基本的なタスク(バックアップ、忘却など)用の cronjob 変数を追加する??- 実装するつもりはありません。個々に合わせたものが多すぎて、実装方法が多彩すぎます。引き続き考えを巡らせます。
autorestic を更新しても restic を固定する方法を見つける。