xilonz.trellis_backup
trellis-backup-role
このロールはTrellisと一緒に使用するために作られています。
自動バックアップをduplyを使って設定することができます。
これにより:
- duplicityとduplyがインストールされます
- 設定された各
wordpress_site
に対して、2つのduplyプロファイルがインストールされます- データベース用の1つ
- アップロード用の1つ
ウェブサイトのコードはバックアップされません。復元が必要な場合は、まず新しいサーバーにウェブサイトをデプロイし、その後にデータベースとアップロードを復元する必要があります。
始め方
ロールとその依存関係をTrellisのgalaxy.yml
ファイルに追加します:
- name: backup
src: xilonz.trellis_backup
version: 2.1.7
ansible-galaxy install -r galaxy.yml
を実行して新しいロールをインストールします。
次に、ロールをserver.yml
に追加します:
roles:
... 他のTrellisロール ...
- { role: backup, tags: [backup] }
ロール変数
ロールは、Trellisのwordpress_sites
辞書から読み込みます。
例:
wordpress_sites:
example.com:
site_hosts:
- canonical: example.com
redirects:
- www.example.com
local_path: ../site # ローカルBedrockサイトディレクトリへのパス(Ansibleルートに対する相対パス)
repo: [email protected]:example/example.com.git # 自分のGitリポジトリURLに置き換え
repo_subtree_path: site # リポジトリ内のBedrock/WPディレクトリへの相対パス
branch: master
multisite:
enabled: false
ssl:
enabled: false
provider: letsencrypt
cache:
enabled: false
+ backup:
+ enabled: true
+ auto: true
+ target: scp://[email protected]/example.com_backups # duplicityがサポートする任意の場所
+ schedule: '0 4 * * *' # バックアップのcron時間(この値を変更)
+ purge: false # 古いバックアップの自動削除を有効にするにはtrueに変更
+ max_age: 1M # 古いバックアップを保持する時間範囲。「purge」コマンドに使用。
+ full_max_age: 1M # 最後のフルバックアップがこの年齢に達した場合、フルバックアップを強制。
+ max_full_backups: 1 # 保持するフルバックアップの数
+ post_actions: # オプション
+ - "curl -L http://your-custom-endpoint" # バックアップ完了後に実行するコマンド
enabled: true
とauto: false
を設定すると、duplyプロファイルがインストールされますが、実際にはバックアップのスケジューリングは行われません。このようにすることで、例えば本番のデータベースをステージングに復元できます。ステージングと本番の両方に同じduplyプロファイルがありますが、実際にバックアップを作成するのは本番サーバーのみです。
すべてのduplicity URL形式(および潜在的なターゲット)を読む。
vault.yml
バックアップターゲットの認証情報をvault.yml
に追加します(ターゲットによっては、S3キー、FTPの認証情報、またはローカルバックアップの場合は何も不要です...)。ターゲットURLに資格情報を埋め込むことも可能ですが、vault.yml
メソッドを使用する方が安全です。
example.com:
env:
backup_target_user: user
backup_target_pass: password
サーバーのプロビジョニング
trellis provision --tags backup environment
またはansible-playbook server.yml -e env=environment --tags backup
を実行して、このロールを実行します。
復元
プロファイルがインストールされると、サーバーから簡単にバックアップと復元ができます。website_name
はwordpress_sites.yml
のウェブサイト名で、ドットをアンダースコアに置き換えたもの(例:example_com
)です。duplyプロファイル名に不安がある場合は、ls /etc/duply
を使用できます。
sudo duply website_name_database restore
sudo duply website_name_uploads restore
2.0の変更点
- paramikoの依存関係が削除されました
server.yml
プレイブックにStouts.backup
ロールをリストする必要はなく、タスクにインポートされます- このロールはMysqlの
auth_socket
プラグインを使用してデータベースに接続するため、最新のTrellisバージョンが必要です
SCPサポートの既知の問題
SCPターゲットを使用するには、サーバーにparamikoがインストールされている必要があります。
paramikoの自動インストールは2.0で削除されました。必要な場合は手動でインストールするか、trellisタスクに追加する必要があります。ただし、Trellisによって作成されたssh_config
のSendEnv
設定でparamikoがクラッシュする既知の問題があります。
S3サポート
V4署名のみを受け入れるS3バケットへのアップロードに関する既知の問題があります。正常にアップロードするには、wordpress_sites.yml
のbackup:
キーに少し追加する必要があります:
wordpress_sites:
example.com:
backup:
...
+ params:
+ - 'export S3_USE_SIGV4="True"'
ライセンス
MIT
著者
このロールは主にJill Royerによって開発され、現在はArjan Steenbergenによってメンテナンスされています。
このロールはLa France insoumiseによるansible-backupロールを必要とします。これはansibleによって自動的にインストールされるはずです。