第 10 章 来自 AWS Marketplace 的 Ansible Automation Platform 备份和恢复过程
要备份和恢复 Ansible Automation Platform 部署,务必要确保为 EFS 设置了自动备份,并可以恢复这些备份。
当您创建 Ansible Automation Platform 部署时,默认自动 Amazon Elastic File System (EFS)备份。但是,请务必检查这些备份是否可以在灾难发生前恢复。
另外,还需要确保进行 Amazon Relational Database Service (RDS)的常规手动快照,以确保部署可以尽可能接近其以前的工作状态。
10.1. 备份 Ansible Automation Platform 部署 复制链接链接已复制到粘贴板!
使用以下步骤确保一个平稳的备份过程。
10.1.1. AWS 权限 复制链接链接已复制到粘贴板!
在开始备份过程前,用于执行备份的 AWS 帐户必须具有以下权限:
Service/Permission | Resources |
---|---|
backup
| |
cloudformation
| |
elasticfilesystem
| |
iam
| arn:aws:iam::*:`role/service-role/AWSBackupDefaultServiceRole` |
rds
| |
secretsmanager
| |
s3
|
10.1.2. 设置 ansible-on-clouds-ops 容器镜像 复制链接链接已复制到粘贴板!
ansible-on-clouds-ops
镜像标签应与您的基础部署版本匹配。例如,如果您的基础部署版本是 2.3.20230221-00,请使用标签 2.3.20230221 拉取 ansible-on-clouds-ops
镜像。
流程
使用与基础部署相同的标签版本拉取
ansible-on-clouds-ops
容器镜像。注意在拉取 docker 镜像前,请确保使用 docker 登录到 registry.redhat.com。使用以下命令登录到 registry.redhat.com。
docker login registry.redhat.io
$ docker login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关 registry 登录的更多信息,请参阅 Registry 身份验证
export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel8:2.3.20230221 docker pull $IMAGE --platform=linux/amd64
$ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel8:2.3.20230221 $ docker pull $IMAGE --platform=linux/amd64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于 EMEA 区域 (欧洲、中东、非洲) 运行以下命令:
export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-emea-rhel8:2.3.20230221 docker pull $IMAGE --platform=linux/amd64
$ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-emea-rhel8:2.3.20230221
$ docker pull $IMAGE --platform=linux/amd64
10.1.3. 生成备份数据文件 复制链接链接已复制到粘贴板!
以下命令创建一个目录,并在备份过程中使用空数据模板填充空数据模板。
流程
创建存放配置的文件夹
mkdir command_generator_data
$ mkdir command_generator_data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用配置文件模板填充
command_generator_data
文件夹。这会在带有root:root_user
和group
权限的command-generator_data
目录中创建extra-vars.yaml
文件。docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE \ command_generator_vars aws_backup_stack \ --output-data-file /data/extra_vars.yaml
$ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE \ command_generator_vars aws_backup_stack \ --output-data-file /data/extra_vars.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行这些命令后,会创建一个
command_generator_data/extra_vars.yaml
模板文件。此模板文件类似于以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.1.4. 更新备份数据文件 复制链接链接已复制到粘贴板!
在触发备份前,您必须填充数据文件。以下变量是数据文件中列出的参数。
-
cloud_credentials_path
是 AWS 凭证文件的路径。 -
DEPLOYMENT_NAME
是基础部署的名称。这是部署基础时使用的相同名称。 aws_backup_iam_role_arn
是 AWS IAM 角色的 Amazon 资源名称 (ARN),具有执行备份操作的权限。注意您可以使用 AWS Backup Default Service Role,其格式为
arn:aws:iam::<Your AWS Account Number>:role/service-role/AWSBackupDefaultServiceRole
。aws_backup_vault_name
是保存 EFS 恢复点的备份库的名称。注意请确保引用的备份库存在,并且上面提供的 AWS Backup IAM 角色具有在密码库中创建 EFS 恢复点所需的权限。
-
aws_region
是部署基础部署的区域。 -
aws_s3_bucket
是存储备份文件的 S3 存储桶的名称。这会创建一个新存储桶(如果尚不存在)。只有最新的备份存储在存储桶中。每个后续备份到同一存储桶都会使用最新的备份覆盖备份文件。有关存储桶命名的指导,请参阅 Bucket 命名规则
填充数据文件后,它应类似于以下内容:此文件中的值作为示例提供:
10.1.5. 运行备份 playbook 复制链接链接已复制到粘贴板!
以下流程将备份 playbook 作为容器运行。
流程
要运行备份,请运行命令生成器。
docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backup_stack --data-file /data/extra_vars.yaml
$ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backup_stack --data-file /data/extra_vars.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会生成 backup CLI 命令
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行生成的命令以触发备份。
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_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::123456789012:role/service-role/AWSBackupDefaultServiceRole \ aws_s3_bucket=AnsibleAutomationPlatform-bucket'
$ 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_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::123456789012:role/service-role/AWSBackupDefaultServiceRole \ aws_s3_bucket=AnsibleAutomationPlatform-bucket'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据数据库大小,备份可能需要几分钟才能完成。成功备份会返回类似如下的日志:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - AWS Marketplace 部署的 Ansible Automation Platform 现在已被成功备份。当日志显示时,playbook 可以成功填充部署的 EFS 备份和 RDS 快照,列出最新的 EFS 恢复点和 RDS 快照信息。