9장. 백업 및 복원
Ansible Automation Platform 배포를 백업하고 복원하려면 EFS에 자동 백업이 설정되어 있고 복원을 위해 이러한 백업에 액세스할 수 있는지 확인하는 것이 중요합니다.
Ansible Automation Platform 배포를 생성하면 자동 Amazon Elastic File System (EFS) 백업이 기본적으로 설정됩니다. 그러나 재해 시나리오 전에 해당 백업을 복원할 수 있는지 확인하는 것이 좋습니다.
또한 Amazon RDS(Amazon Cryostatal Database Service)의 일반 수동 스냅샷이 이전 작동 상태에 최대한 가깝게 복원할 수 있도록 하는 것이 매우 중요합니다.
9.1. Ansible Automation Platform 배포 백업
다음 절차를 사용하여 원활한 백업 프로세스를 보장합니다.
9.1.1. AWS 권한
백업 프로세스를 시작하기 전에 백업을 실행하는 데 사용된 AWS 계정에 다음과 같은 권한이 부여되어야 합니다.
| 서비스/권한 | Resources |
|---|---|
| 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
레지스트리 로그인에 대한 자세한 내용은 레지스트리 인증을 참조하십시오.
$ export IMAGE=registry.redhat.io/ansible-on-clouds/ansible-on-clouds-ops-rhel9:2.4.20230630 $ docker pull $IMAGE --platform=linux/amd64
9.1.3. 백업 데이터 파일 생성
다음 명령은 디렉터리를 생성하고 백업 중에 완료될 때 사용할 빈 데이터 템플릿으로 채웁니다.
절차
구성을 저장할 폴더를 생성
$ mkdir command_generator_data
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
이러한 명령을 실행하면
$(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
9.1.4. 백업 데이터 파일 업데이트
백업을 트리거하기 전에 데이터 파일을 채워야 합니다. 다음 변수는 데이터 파일에 나열된 매개 변수입니다.
-
ansible_config_path(선택 사항)는 고객ansible_config로 덮어쓰는 경우에만 사용합니다. -
cloud_credentials_path는 AWS 인증 정보 파일의 경로입니다. -
deployment_name은 foundation 배포의 이름입니다. 이 이름은 기반을 배포할 때 사용한 이름과 같습니다. aws_backup_iam_role_arn은 백업 작업을 수행할 수 있는 권한이 있는 AWS IAM 역할의 Amazon Resource Name (ARN)입니다.참고arn:aws:iam::<Your AWS 계정 번호>:role/service-role/AWSBackupDefaultServiceRole 형식의 AWS Backup Default Service Role을 사용할 수 있습니다.aws_backup_vault_name은 EFS 복구 지점을 보유할 백업 자격 증명 모음의 이름입니다.참고참조된 백업 자격 증명 모음이 있고 위에 제공된 AWS Backup IAM 역할에 자격 증명 모음 내에 EFS 복구 지점을 생성하는 데 필요한 권한이 있는지 확인하십시오.
-
aws_region은 foundation 배포가 배포된 리전입니다. -
aws_s3_bucket은 백업 파일이 저장된 S3 버킷의 이름입니다. 아직 없는 경우 새 버킷이 생성됩니다. 모든 백업은 버킷에 저장됩니다.
버킷 이름 지정에 대한 지침은 버킷 이름 지정 규칙을 참조하십시오.
S3 버킷 생성에 대한 지침은 AWS에서 버킷 생성을 참조하십시오. aws_ssm_bucket_name은 AWS SSM의 임시 구성 파일이 저장된 S3 버킷의 이름입니다. 기존 버킷을 사용하거나 새 버킷을 생성할 수 있습니다.참고aws_ssm_bucket_name매개변수는 임시 구성 파일을 저장하는 데만 사용됩니다. 다른 플레이북에서 사용하기 위해 저장할 필요가 없습니다. 유효한 기존 버킷을 모두 사용할 수 있습니다. S3 버킷 생성에 대한 자세한 내용은 AWS 문서에서 AWS 생성 A 버킷 을 참조하십시오.-
backup_prefix는 백업 이름에 추가할 접두사입니다(기본값: aoc-backup).
데이터 파일을 채우면 다음과 같아야 합니다. 이 파일의 값은 다음과 같이 제공됩니다.
선택적 값 ansible_config_path 가 제거되었습니다. 이 선택적 값을 사용하지 않고 이 변수에 기본값을 사용하려면 아래 예제에서와 같이 데이터 파일에도 해당 값을 제거해야 합니다. 이 선택적 변수를 사용하려면 데이터 파일에 'must'를 포함하고 값을 할당해야 합니다.
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-backup9.1.5. 백업 플레이북 실행
다음 절차에서는 백업 플레이북을 컨테이너로 실행합니다.
절차
백업을 실행하려면 명령 생성기를 실행합니다.
$ docker run --rm -v $(pwd)/command_generator_data:/data $IMAGE command_generator aws_backup_stack --data-file /data/backup.yml
그러면 backup 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' ===============================================
생성된 명령을 실행하여 백업을 트리거합니다.
$ 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'
데이터베이스 크기에 따라 백업을 완료하는 데 몇 분이 걸릴 수 있습니다. 성공적인 백업은 다음과 유사한 로그를 반환합니다.
{ "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" ] }- 이제 AWS Marketplace 배포의 Ansible Automation Platform이 성공적으로 백업됩니다. 로그에 표시된 대로 플레이북은 위에서 지정한 S3 버킷에 백업 폴더를 성공적으로 생성합니다.
9.1.6. 백업 삭제
백업을 삭제하는 두 개의 플레이북이 있습니다.
-
단일 백업을 삭제하는
aws_backup_delete플레이북을 사용합니다. -
aws_backups_delete플레이북을 사용하여 한 번에 여러 백업을 삭제합니다.
aws_backups_delete 는 ["backup1","backup2",…] 문자열 배열을 사용하지만 aws_backup_delete 는 특정 백업의 이름인 "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
다음 출력을 생성합니다.
=============================================== 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
명령을 실행하면
$(pwd)/command_generator_data/backups_delete.yml템플릿 파일이 생성됩니다. 이 템플릿 파일은 다음과 유사합니다.aws_backups_delete: cloud_credentials_path: extra_vars: aws_backup_names: aws_region: aws_s3_bucket: delete:
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
그 결과 다음과 같은 이점을 얻을 수 있습니다.
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' ===============================================
- 제공된 backup 명령을 실행하여 백업을 삭제합니다.
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
9.1.6.1. 백업을 삭제하지 못했습니다
백업 삭제가 실패하면 다음 단계를 수행합니다.
절차
- 백업을 포함하는 버킷으로 이동합니다.
- 백업의 이름이 있는 디렉터리를 찾습니다.
- 백업 디렉터리를 엽니다.
-
restore-vars.json파일 이름을 열고Recovery_Point_ARN및Backup_Vault_Name의 마지막 부분을 확인합니다. - AWS 백업 으로 이동합니다.
- Backup Vault 를 선택합니다.
-
Backup_Vault_Name에서 기록한 이름이 있는 자격 증명 모음을 선택합니다. -
Recovery_Point_ARN을 검색합니다. -
아직 삭제되지 않은 경우
Recovery_Point_ARN을 삭제합니다. - 백업을 포함하는 버킷으로 이동합니다.
- 백업 이름이 있는 디렉터리를 삭제합니다.