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 文件
流程
运行命令 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
运行此命令后,会创建一个
$(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 时,您可以使用命令生成器来创建恢复命令。
流程
运行命令生成器。
$ 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>'
运行生成的命令。
$ 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'
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!