第9章 バックアップおよび復元
Ansible Automation Platform デプロイメントをバックアップおよび復元するには、EFS の自動バックアップが設定されていること、およびこれらのバックアップにアクセスして復元できることを確認する必要があります。
Ansible Automation Platform デプロイメントを作成すると、Amazon Elastic File System (EFS) の自動バックアップがデフォルトで設定されます。ただし、障害が発生する前に、これらのバックアップを復元できるかどうかを確認することを推奨します。
さらに、Amazon Relational Database Service (RDS) の定期的な手動スナップショットを取得して、デプロイメントを可能な限り以前の動作状態に復元できるようにすることも非常に重要です。
9.1. Ansible Automation Platform デプロイメントのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
バックアッププロセスをスムーズに行うには、次の手順を使用してください。
9.1.1. AWS の権限 リンクのコピーリンクがクリップボードにコピーされました!
バックアッププロセスを開始する前に、バックアップの実行に使用する AWS アカウントに次の権限が付与されている必要があります。
パーミッションを確認したり、パーミッション拒否の問題をデバッグするには、AWS IAM Policy Simulator が役に立ちます。
サービス/権限 | リソース |
---|---|
backup
| |
cloudformation
| |
elasticfilesystem
| |
iam
| arn:aws:iam::*:`role/service-role/AWSBackupDefaultServiceRole` |
rds
| |
secretsmanager
| |
s3
|
9.1.2. ansible-on-clouds-ops コンテナーイメージの設定 リンクのコピーリンクがクリップボードにコピーされました!
ansible-on-clouds-ops
イメージのタグが、基盤デプロイメントのバージョンと一致している必要があります。たとえば、基盤のデプロイメントバージョンが 2.4.20230630-00 の場合は、2.4.20230630 のタグを使用して ansible-on-clouds-ops
イメージをプルします。
手順
基盤デプロイメントとタグのバージョンが同じ
ansible-on-clouds-ops
コンテナーイメージをプルします。注記Docker イメージをプルする前に、Docker を使用して registry.redhat.io にログインしていることを確認してください。以下のコマンドを使用して registry.redhat.io にログインします。
docker login registry.redhat.io
$ docker login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow レジストリーのログインに関する詳細は、Registry Authentication を参照してください。
export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel9:2.4.20230630 docker pull $IMAGE --platform=linux/amd64
$ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel9:2.4.20230630 $ docker pull $IMAGE --platform=linux/amd64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.3. バックアップデータファイルの生成 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドは、ディレクトリーを作成し、そのディレクトリーに空のデータテンプレートを配置します。このテンプレートは、データを入力してバックアップ時に使用するためのものです。
手順
設定を保存するフォルダーを作成します。
mkdir command_generator_data
$ mkdir command_generator_data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow command_generator_data
フォルダーに設定ファイルのテンプレートを追加します。これにより、command-generator_data
ディレクトリー内にbackup.yml
ファイルが作成されます。注記Linux では、コマンドジェネレーターが作成したファイルまたはディレクトリーは、デフォルトで
root:root
の所有となります。ファイルとディレクトリーの所有権を変更するには、ファイルの作成後にsudo chmod
コマンドを実行します。詳細は、コマンドジェネレーター - root が所有する Linux ファイル を参照してください。docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE \ command_generator_vars aws_backup_stack \ --output-data-file /data/backup.yml
$ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE \ command_generator_vars aws_backup_stack \ --output-data-file /data/backup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドを実行すると、
$(pwd)/command_generator_data/backup.yml
テンプレートファイルが作成されます。このテンプレートファイルは以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.4. バックアップデータファイルの更新 リンクのコピーリンクがクリップボードにコピーされました!
バックアップを開始する前に、データファイルを設定する必要があります。次の変数は、データファイルにリストされているパラメーターです。
-
ansible_config_path
(任意) は、お客様のansible_config
でオーバーライドする場合にのみ使用します。 -
cloud_credentials_path
は、AWS 認証情報ファイルへのパスです。 -
deployment_name
は、基盤デプロイメントの名前です。これは、基盤をデプロイしたときに使用した名前と同じです。 aws_backup_iam_role_arn
は、バックアップ操作を実行する権限を持つ AWS IAM ロールの Amazon Resource Name (ARN) です。注記これには、
arn:aws:iam::<Your AWS Account Number>:role/service-role/AWSBackupDefaultServiceRole
という形式の AWS Backup Default Service Role を使用できます。aws_backup_vault_name
は、EFS 復旧ポイントを保持するバックアップボールトの名前です。注記参照先のバックアップコンテナーが存在すること、および上記の AWS Backup IAM ロールに、EFS 復旧ポイントをコンテナー内に作成するために必要な権限があることを確認してください。
-
aws_region
は、基盤デプロイメントがデプロイされているリージョンです。 -
aws_s3_bucket
は、バックアップファイルが保存されている S3 バケットの名前です。バケットがまだ存在しない場合は、このパラメーターにより新しいバケットが作成されます。すべてのバックアップはバケットに保存されます。
バケットの命名に関するガイダンスは、Bucket naming rules を参照してください。
S3 バケットの作成に関するガイダンスは、AWS Creating a bucket を参照してください。 aws_ssm_bucket_name
は、AWS SSM の一時設定ファイルが保存されている S3 バケットの名前です。既存のバケットを使用することも、新しいバケットを作成することもできます。注記aws_ssm_bucket_name
パラメーターは、一時設定ファイルを保存するためにのみ使用されます。他の Playbook で使用するために保存する必要はありません。有効な既存のバケットであればどれでも使用できます。S3 バケットの作成の詳細は、AWS ドキュメントの AWS Creating A Bucket を参照してください。-
backup_prefix
は、バックアップ名に追加する接頭辞です (デフォルト: aoc-backup)。
データファイルを入力すると、次のようになります。このファイル内の値は例として提供されています。
任意の値 ansible_config_path
は削除されています。この任意の値を使用せず、この変数のデフォルト値を使用する場合は、以下の例で行ったように、データファイルからもその値を削除する必要があります。この任意の変数を使用する場合は、データファイルに変数を含めて値を割り当てる必要があります。
9.1.5. バックアップ Playbook の実行 リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、バックアップ Playbook をコンテナーとして実行します。
手順
バックアップを実行するために、コマンドジェネレーターを実行します。
docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backup_stack --data-file /data/backup.yml
$ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backup_stack --data-file /data/backup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、バックアップ CLI コマンドが生成されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成されたコマンドを実行してバックアップをトリガーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースのサイズによっては、バックアップが完了するまでに数分かかる場合があります。バックアップが成功すると、次のようなログが返されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - これで、Ansible Automation Platform from AWS Marketplace デプロイメントが正常にバックアップされました。ログに示されているように、Playbook は上で指定した S3 バケットにバックアップフォルダーを正常に作成します。
9.1.6. バックアップの削除 リンクのコピーリンクがクリップボードにコピーされました!
バックアップを削除する 2 つの Playbook があります。
-
単一のバックアップを削除する
aws_backup_delete
Playbook を使用します。 -
複数のバックアップを一度に削除する
aws_backups_delete
Playbook を使用します。
aws_backups_delete
は文字列の配列 ["backup1","backup2",…] を取りますが、aws_backup_delete
は特定のバックアップの名前である 1 つの文字列のみ (backup1) を取ります。
このセクションでは、aws_backups_delete
の使用を説明します。
手順
command_generator_data
ディレクトリーに設定ファイルのテンプレートを追加します。注記Linux では、コマンドジェネレーターが作成したファイルまたはディレクトリーは、デフォルトで
root:root
の所有となります。ファイルとディレクトリーの所有権を変更するには、ファイルの作成後にsudo chmod
コマンドを実行します。詳細は、コマンドジェネレーター - root が所有する Linux ファイル を参照してください。docker run --rm -v $(pwd)/command_generator_data/:/data $IMAGE command_generator_vars aws_backups_delete --output-data-file /data/backups_delete.yml
docker run --rm -v $(pwd)/command_generator_data/:/data $IMAGE command_generator_vars aws_backups_delete --output-data-file /data/backups_delete.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドを実行すると以下が出力されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行すると、
$(pwd)/command_generator_data/backups_delete.yml
テンプレートファイルが作成されます。このテンプレートファイルは以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
aws_backup_names
パラメーターには、["backup1","backup2"]
などの文字列の配列を指定する必要があります。正常に削除するには、delete
パラメーターを true
に設定する必要があります。
バックアップを削除するには、コマンドジェネレーターを実行して
aws_backups_delete
コマンドを生成します。docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backups_delete --data-file /data/backups_delete.yml
docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backups_delete --data-file /data/backups_delete.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow その結果、次の出力が得られます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 提供されたバックアップコマンドを実行してバックアップを削除します。
Playbook の実行が完了すると、出力は次のようになります。
TASK [redhat.ansible_on_clouds.standalone_aws_backup_delete : [delete_backup] Dry-run message] *** skipping: [localhost] PLAY RECAP ********************************************************************* localhost : ok=21 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
TASK [redhat.ansible_on_clouds.standalone_aws_backup_delete : [delete_backup] Dry-run message] *** skipping: [localhost] PLAY RECAP ********************************************************************* localhost : ok=21 changed=2 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.6.1. バックアップの削除に失敗する リンクのコピーリンクがクリップボードにコピーされました!
バックアップの削除に失敗した場合は、以下の手順を行ってください。
手順
- バックアップを含むバケットに移動します。
- バックアップの名前を持つディレクトリーを見つけます。
- バックアップディレクトリーを開きます。
-
ファイル名
restore-vars.json
を開き、Recovery_Point_ARN
とBackup_Vault_Name
の最後の部分をメモします。 - AWS backup に移動します。
- Backup Vault を選択します。
-
Backup_Vault_Name
で書き留めた名前の Vault を選択します。 -
Recovery_Point_ARN
を検索します。 -
Recovery_Point_ARN
をまだ削除していない場合は削除します。 - バックアップを含むバケットに移動します。
- バックアップと同じ名前のディレクトリーを削除します。