第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 が役に立ちます。

Expand
サービス/権限リソース

backup

  • backup:DescribeBackupJob
  • backup:ListRecoveryPointsByBackupVault
  • backup:StartBackupJob
 

cloudformation

  • cloudformation:DescribeStacks
  • cloudformation:DescribeStackResources
 

elasticfilesystem

  • elasticfilesystem:DescribeFileSystems
 

iam

  • iam:PassRole

arn:aws:iam::*:`role/service-role/AWSBackupDefaultServiceRole`

rds

  • rds:CreateDBSnapshot
  • rds:DescribeDBSnapshots
 

secretsmanager

  • secretsmanager:GetSecretValue
 

s3

  • s3:CreateBucket
  • s3:GetObject
  • s3:PutObject
 

9.1.2. ansible-on-clouds-ops コンテナーイメージの設定

ansible-on-clouds-ops イメージのタグが、基盤デプロイメントのバージョンと一致している必要があります。たとえば、基盤のデプロイメントバージョンが 2.4.20230630-00 の場合は、2.4.20230630 のタグを使用して ansible-on-clouds-ops イメージをプルします。

手順

  1. 基盤デプロイメントとタグのバージョンが同じ ansible-on-clouds-ops コンテナーイメージをプルします。

    注記

    Docker イメージをプルする前に、Docker を使用して registry.redhat.io にログインしていることを確認してください。以下のコマンドを使用して registry.redhat.io にログインします。

    $ docker login registry.redhat.io
    Copy to Clipboard Toggle word wrap

    レジストリーのログインに関する詳細は、Registry Authentication を参照してください。

    $ 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 Toggle word wrap

9.1.3. バックアップデータファイルの生成

次のコマンドは、ディレクトリーを作成し、そのディレクトリーに空のデータテンプレートを配置します。このテンプレートは、データを入力してバックアップ時に使用するためのものです。

手順

  1. 設定を保存するフォルダーを作成します。

    $ mkdir command_generator_data
    Copy to Clipboard Toggle word wrap
  2. 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
    Copy to Clipboard Toggle word wrap
  3. これらのコマンドを実行すると、$(pwd)/command_generator_data/backup.yml テンプレートファイルが作成されます。このテンプレートファイルは以下のようになります。

    aws_backup_stack:
      ansible_config_path:
      cloud_credentials_path:
      deployment_name:
      extra_vars:
        aws_backup_iam_role_arn:
        aws_backup_vault_name: Default
        aws_region:
        aws_s3_bucket:
        aws_ssm_bucket_name:
        backup_prefix: aoc-backup
    Copy to Clipboard Toggle word wrap

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 は削除されています。この任意の値を使用せず、この変数のデフォルト値を使用する場合は、以下の例で行ったように、データファイルからもその値を削除する必要があります。この任意の変数を使用する場合は、データファイルに変数を含めて値を割り当てる必要があります。

aws_backup_stack:
  cloud_credentials_path: ~/.aws/credentials
  deployment_name: AnsibleAutomationPlatform
  extra_vars:
    aws_backup_iam_role_arn: arn:aws:iam::<Your AWS Account Number>:role/service-role/AWSBackupDefaultServiceRole
    aws_backup_vault_name: Default
    aws_region: us-east-1
    aws_s3_bucket: ansible-automation-platform-bucket
    aws_ssm_bucket_name: aap-ssm-bucket
    backup_prefix: aoc-backup
Copy to Clipboard Toggle word wrap

9.1.5. バックアップ Playbook の実行

次の手順では、バックアップ Playbook をコンテナーとして実行します。

手順

  1. バックアップを実行するために、コマンドジェネレーターを実行します。

    $ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backup_stack --data-file /data/backup.yml
    Copy to Clipboard Toggle word wrap

    これにより、バックアップ CLI コマンドが生成されます。

    ----------------------------------------------
    docker run --rm --env PLATFORM=AWS -v ~/.aws/credentials:/home/runner/.aws/credentials:ro \
    --env ANSIBLE_CONFIG=../aws-ansible.cfg --env DEPLOYMENT_NAME=AnsibleAutomationPlatform --env GENERATE_INVENTORY=true  \
    $IMAGE redhat.ansible_on_clouds.aws_backup_stack \
    -e 'aws_foundation_stack_name=AnsibleAutomationPlatform aws_region=us-east-1 aws_backup_vault_name=Default \
    aws_backup_iam_role_arn=arn:aws:iam::<Your AWS Account Number>:role/service-role/AWSBackupDefaultServiceRole \
    aws_s3_bucket=ansible-automation-platform-bucket aws_ssm_bucket_name=aap-ssm-bucket backup_prefix=aoc-backup'
    ===============================================
    Copy to Clipboard Toggle word wrap
  2. 生成されたコマンドを実行してバックアップをトリガーします。

    $ docker run --rm --env PLATFORM=AWS -v ~/.aws/credentials:/home/runner/.aws/credentials:ro \
    --env ANSIBLE_CONFIG=../aws-ansible.cfg --env DEPLOYMENT_NAME=AnsibleAutomationPlatform --env GENERATE_INVENTORY=true  \
    $IMAGE redhat.ansible_on_clouds.aws_backup_stack \
    -e 'aws_foundation_stack_name=AnsibleAutomationPlatform aws_region=us-east-1 aws_backup_vault_name=Default \
    aws_backup_iam_role_arn=arn:aws:iam::<Your AWS Account Number>:role/service-role/AWSBackupDefaultServiceRole \
    aws_s3_bucket=ansible-automation-platform-bucket aws_ssm_bucket_name=aap-ssm-bucket backup_prefix=aoc-backup'
    Copy to Clipboard Toggle word wrap
  3. データベースのサイズによっては、バックアップが完了するまでに数分かかる場合があります。バックアップが成功すると、次のようなログが返されます。

    {
        "msg": [
            "Successfully backed up AnsibleAutomationPlatform!",
            "Please note below the bucket name, region and backup name which are required for restore process.",
            "aws_s3_bucket: ansible-automation-platform-bucket ",
            "aws_region: us-east-1",
            "aws_backup_name: ansible-automation-platform-bucket-20230706T163309",
            "Your backup files can be found at:",
            "https://s3.console.aws.amazon.com/s3/buckets/ansible-automation-platform-bucket?region=us-east-1&prefix=aoc-backup-AnsibleAutomationPlatform-20230706T163309/&showversions=false"
        ]
    }
    Copy to Clipboard Toggle word wrap
  4. これで、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 の使用を説明します。

手順

  1. 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
    Copy to Clipboard Toggle word wrap

    このコマンドを実行すると以下が出力されます。

    ===============================================
    Playbook: aws_backups_delete
    Description: This playbook delete a specified backup.
    -----------------------------------------------
    This playbook delete a specified backup
    
    -----------------------------------------------
    Command generator template:
    
    docker run --rm -v <local_data_file_directory>:/data $IMAGE command_generator aws_backups_delete --data-file /data/backups_delete.yml
    Copy to Clipboard Toggle word wrap
  2. コマンドを実行すると、$(pwd)/command_generator_data/backups_delete.yml テンプレートファイルが作成されます。このテンプレートファイルは以下のようになります。

    aws_backups_delete:
      cloud_credentials_path:
      extra_vars:
        aws_backup_names:
        aws_region:
        aws_s3_bucket:
        delete:
    Copy to Clipboard Toggle word wrap

aws_backup_names パラメーターには、["backup1","backup2"] などの文字列の配列を指定する必要があります。正常に削除するには、delete パラメーターを true に設定する必要があります。

  1. バックアップを削除するには、コマンドジェネレーターを実行して aws_backups_delete コマンドを生成します。

    docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backups_delete --data-file /data/backups_delete.yml
    Copy to Clipboard Toggle word wrap

    その結果、次の出力が得られます。

    Command to run playbook:
    
    docker run --rm --env PLATFORM=AWS -v ~/.aws/credentials:/home/runner/.aws/credentials:ro \
    --env ANSIBLE_CONFIG=../aws-ansible.cfg  $IMAGE redhat.ansible_on_clouds.aws_backups_delete \
    -e 'aws_region=<region> aws_s3_bucket=<bucket> aws_backup_names=["backup1","backup2"] delete=True'
    ===============================================
    Copy to Clipboard Toggle word wrap
  2. 提供されたバックアップコマンドを実行してバックアップを削除します。
  3. 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
    Copy to Clipboard Toggle word wrap

9.1.6.1. バックアップの削除に失敗する

バックアップの削除に失敗した場合は、以下の手順を行ってください。

手順

  1. バックアップを含むバケットに移動します。
  2. バックアップの名前を持つディレクトリーを見つけます。
  3. バックアップディレクトリーを開きます。
  4. ファイル名 restore-vars.json を開き、Recovery_Point_ARNBackup_Vault_Name の最後の部分をメモします。
  5. AWS backup に移動します。
  6. Backup Vault を選択します。
  7. Backup_Vault_Name で書き留めた名前の Vault を選択します。
  8. Recovery_Point_ARN を検索します。
  9. Recovery_Point_ARN をまだ削除していない場合は削除します。
  10. バックアップを含むバケットに移動します。
  11. バックアップと同じ名前のディレクトリーを削除します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat