10.2. 恢复过程

恢复过程会创建新的部署,并将 filestore 和 SQL 数据库实例恢复到指定的备份。

重要
  • 您必须使用用于备份的相同操作镜像版本恢复。

以下流程描述了如何从 GCP Marketplace 部署中恢复 Ansible Automation Platform。

10.2.1. 拉取 ansible-on-clouds-ops 容器镜像

流程

  • 使用与基础部署相同的标签,拉取 ansible-on-clouds-ops 容器的 docker 镜像。

    注意

    在拉取 docker 镜像前,请确保使用 docker 登录到 registry.redhat.io。使用以下命令登录到 registry.redhat.io。

    $ docker login registry.redhat.io

    有关 registry 登录的更多信息,请参阅 Registry 身份验证

    $ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel9:2.4.20230630
    $ docker pull $IMAGE --platform=linux/amd64

10.2.2. 设置环境

流程

  • 创建用于存放配置文件的文件夹。

    $ mkdir command_generator_data

10.2.3. 所需权限

您必须具有以下 GCP IAM 权限才能恢复堆栈:

required-roles:

Cloud SQL Client
Cloud SQL Instance User
Compute Instance Admin (v1)
Compute Network Admin
Editor
Logs Writer
Secret Manager Secret Accessor
Service Account User
required-permissions:

compute.instances.list
compute.networks.create
deploymentmanager.deployments.create
deploymentmanager.deployments.get
deploymentmanager.operations.get
file.instances.create
file.operations.get
iap.tunnelInstances.accessViaIAP
secretmanager.secrets.create
secretmanager.secrets.delete
secretmanager.secrets.get
secretmanager.secrets.update
secretmanager.versions.add
secretmanager.versions.list
storage.objects.get
storage.objects.list

10.2.4. 生成 restore.yml 文件

流程

  1. 运行命令 generator command_generator_vars 来生成 restore.yml

    注意

    在 Linux 上,命令生成器创建的任何文件或目录默认归 root:root 所有。要更改文件和目录的所有权,您可以在创建文件后运行 sudo chmod 命令。如需更多信息,请阅读 技术说明

    docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator_vars gcp_restore_deployment --output-data-file /data/restore.yml
  2. 运行此命令后,会创建一个 $(pwd)/command_generator_data/restore.yml 模板文件。此模板文件类似于以下内容:

    ===============================================
    Playbook: gcp_restore_deployment
    Description: This playbook is used to restore the Ansible Automation Platform from GCP Marketplace environment from a backup.
    -----------------------------------------------
    This playbook is used to restore the Ansible Automation Platform from GCP Marketplace environment from a backup.
    For more information regarding backup and restore, visit our official documentation -
    https://access.redhat.com/documentation/zh-cn/ansible_on_clouds/2.x/html/red_hat_ansible_automation_platform_from_gcp_marketplace_guide/index
    
    -----------------------------------------------
    Command generator template:
    
    docker run --rm -v <local_data_file_directory>:/data $IMAGE command_generator gcp_restore_deployment --data-file /data/restore.yml

    模板类似于以下内容:

    gcp_restore_deployment:
      cloud_credentials_path:
      deployment_name:
      extra_vars:
        backup_name:
        gcp_bucket_backup_name:
        gcp_cloud_sql_peering_network:
        gcp_compute_region:
        gcp_compute_zone:
        gcp_controller_internal_ip_address:
        gcp_existing_vpc:
        gcp_filestore_ip_range:
        gcp_hub_internal_ip_address:

10.2.5. restore.yml 文件的参数

您只能恢复到新的 VPC 网络。

对于新的 VPC

如果要使用新的 VPC 恢复,请设置以下参数:

  • gcp_existing_vpc 必须设为 false

必须删除以下参数:

  • gcp_filestore_ip_range
  • gcp_cloud_sql_peering_network
  • gcp_controller_internal_ip_address
  • gcp_hub_internal_ip_address

为以下参数提供值:

  • gcp_existing_vpc 必须设为 false
  • cloud_credentials_path 是 Google Cloud 服务帐户凭证文件的路径。
  • DEPLOYMENT_ NAME 是必须恢复部署的名称。将使用此名称创建新的部署。此名称不能已存在部署。
  • backup_name 是存储桶中的备份名称。使用 gcp_backup_ deployment 或 gcp_backup _list 命令时会显示此名称。
  • gcp_bucket_backup_name 是用于备份的存储桶名称。
  • gcp_compute_region 是进行备份的区域。这可以通过检查 Deployment Manager 中的 Deployments 配置来检索。
  • gcp_compute_zone 是进行备份的区域。这可以通过检查 Deployment Manager 中的 Deployments 配置来检索。

对于现有的 VPC

如果要使用现有的 VPC 恢复,您必须设置上面显示的参数。

您还必须设置以下附加参数:

  • gcp_existing_vpc 设置为 true
  • gcp_filestore_ip_range 必须设置为您的 VPC 的空闲 ip/29 范围。例如: 192.168.245.0/29。从 GCP Marketplace 部署 Ansible Automation Platform 时,不得使用 192.168.243.0/29 作为默认值。
  • gcp_cloud_sql_peering_network 必须设置为空闲 /24 子网。您不能使用 192.168.241.0/24,因为这会在原始部署过程中使用。
  • gcp_controller_internal_ip_address 必须设置为 VPC 网络中的一个空闲 IP。
  • gcp_hub_internal_ip_address 必须设置为 VPC 网络中的一个空闲 IP。

10.2.6. 运行 restore 命令

填充 $(pwd)/command_generator_data/restore.yml 时,您可以使用命令生成器来创建恢复命令。

流程

  1. 运行命令生成器。

    $ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator gcp_restore_deployment --data-file /data/restore.yml

    这会生成一个包含所有所需卷、环境变量和参数的新命令。

    生成的命令类似如下:

    docker run --rm --env PLATFORM=GCP -v <local_credential_file>:/home/runner/.gcp/credentials:ro \
    --env ANSIBLE_CONFIG=../gcp-ansible.cfg --env DEPLOYMENT_NAME=<deployment_name> --env GENERATE_INVENTORY=true -\
    -env CHECK_GENERATED_INVENTORY=false  $IMAGE redhat.ansible_on_clouds.gcp_restore_deployment \
    -e 'gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials  \
    gcp_deployment_name=<deployment_name> gcp_compute_region=<region> gcp_compute_zone=<zone> \
    gcp_bucket_backup_name=<bucket> backup_name=<backup_name> gcp_existing_vpc=<existing_vpc>'
  2. 运行生成的命令。

    $ docker run --rm --env PLATFORM=GCP -v <local_credential_file>:/home/runner/.gcp/credentials:ro \
    --env ANSIBLE_CONFIG=../gcp-ansible.cfg  $IMAGE redhat.ansible_on_clouds.gcp_restore_deployment \
    -e 'gcp_service_account_credentials_json_path=/home/runner/.gcp/credentials  \
    gcp_deployment_name=<former_deployment_name> gcp_restored_deployment_name=<new_deployment_name> \
    gcp_compute_region=<region> gcp_compute_zone=<zone> gcp_bucket_backup_name=<bucket> gcp_existing_vpc=False'
  3. playbook 完成后,输出类似于以下内容:

    TASK [redhat.ansible_on_clouds.standalone_gcp_restore : Display internal IP addresses] ***
    ok: [localhost] =>
      msg:
      - 'Hub        internal IP: 192.168.240.21'
      - 'Controller internal IP: 192.168.240.20'
    
    PLAY RECAP *********************************************************************
    localhost                  : ok=33   changed=8    unreachable=0    failed=0    skipped=6    rescued=0    ignored=2

10.2.7. 无法恢复

如果在恢复过程中出现类似以下内容的消息,则必须联系支持,因为必须手动进行恢复。

TASK [redhat.ansible_on_clouds.standalone_gcp_restore : [restore_deployment] Restore awx db] *
fatal: [localhost -> dvernier-restore1-aap-cntrlr-x2c6]: FAILED!