AWSSupport-MigrateXenToNitroLinux - AWS Systems Manager 자동화 런북 참조

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWSSupport-MigrateXenToNitroLinux

설명

AWSSupport-MigrateXenToNitroLinux 실행서는 Amazon Elastic Compute Cloud(Amazon EC2)의 Linux Xen 인스턴스를 복제 및 준비하고 Nitro 인스턴스 유형으로 마이그레이션합니다. 이 실행서는 작업 유형에 대한 두 가지 옵션을 제공합니다.

  • Clone&Migrate - 이 옵션의 워크플로는 예비 검사, 테스트Clone&Migrate 단계로 구성됩니다. 워크플로는 AWSSupport-CloneXenEC2InstanceAndMigrateToNitro 실행서를 사용하여 실행됩니다.

  • FullMigration - 이 옵션은 Clone&Migrate 워크플로를 실행한 다음 루트 Amazon EBS 볼륨 교체라는 추가 단계를 수행합니다.

중요

이 실행서를 사용하면 Amazon EC2 인스턴스의 실행 시간, Amazon Elastic Block Store(Amazon EBS) 볼륨 생성 및 AMIs에 대한 비용이 계정에 발생합니다. 자세한 내용은 Amazon EC2 요금Amazon EBS 요금을 참조하세요.

예비 검사

자동화는 마이그레이션을 계속하기 전에 다음과 같은 예비 검사를 수행합니다. 검사 중 하나라도 실패하면 자동화가 종료됩니다. 이 단계는 Clone&Migrate 워크플로의 일부일 뿐입니다.

  • 대상 인스턴스가 이미 Nitro 인스턴스 유형인지 확인합니다.

  • 대상 인스턴스에 스팟 인스턴스 구매 옵션이 사용되었는지 확인합니다.

  • 인스턴스 스토어 볼륨이 대상 인스턴스에 연결되어 있는지 확인합니다.

  • 대상 인스턴스 운영 체제(OS) 가 Linux인지 확인합니다.

  • 대상 인스턴스가 Amazon EC2 Auto Scaling 그룹의 일부인지 확인합니다. Auto Scaling 그룹의 일부인 경우에는 자동화를 통해 인스턴스가 standby 상태에 있는지 확인합니다.

  • 인스턴스가 AWS Systems Manager에 의해 관리되는지 확인합니다.

테스트

자동화는 대상 인스턴스에서 Amazon Machine Image(AMI)를 생성하고 새로 생성된 AMI 인스턴스에서 테스트 인스턴스를 시작합니다. 이 단계는 오직 Clone&Migrate 워크플로의 일부입니다.

테스트 인스턴스가 모든 상태 검사를 통과하면 자동화가 일시 중지되고 Amazon Simple Notification Service(Amazon SNS) 알림을 통해 지정된 보안 주체의 승인을 요청합니다. 승인이 제공되면 자동화가 테스트 인스턴스를 종료하며 대상 인스턴스를 중지하고 마이그레이션을 계속합니다. 새로 생성된 AMI은 Clone&Migrate 워크플로가 끝나면 등록이 해제됩니다.

참고

승인을 제공하기 전에 대상 인스턴스에서 실행 중인 모든 애플리케이션이 정상적으로 종료되었는지 확인하는 것이 좋습니다.

복제 및 마이그레이션

자동화는 대상 인스턴스에서 다른 AMI을 생성하고 새 인스턴스를 시작하여 Nitro 인스턴스 유형으로 변경합니다. 자동화는 마이그레이션을 계속하기 전에 다음 필수 조건을 완료합니다. 검사 중 하나라도 실패하면 자동화가 종료됩니다. 이 단계 또한 Clone&Migrate 워크플로의 일부일 뿐입니다.

  • 향상된 네트워킹(ENA) 속성을 활성화합니다.

  • ENA 드라이버가 아직 설치되지 않은 경우, 최신 버전을 설치하거나 ENA 드라이버 버전을 최신 버전으로 업데이트합니다. 네트워크 성능을 극대화하려면, Nitro 인스턴스 유형이 6세대인 경우 최신 ENA 드라이버 버전으로 업데이트해야 합니다.

  • NVMe 모듈이 설치되었는지 확인합니다. 모듈이 설치되면 자동화는 모듈이 initramfs에 로드되었는지 확인합니다.

  • /etc/fstab을 분석하고 블록 디바이스 이름(/dev/sd* 또는 /dev/xvd*)이 있는 항목을 해당 UUID로 교체합니다. 구성을 수정하기 전에 자동화를 통해 경로 /etc/fstab*에 파일 백업본이 생성됩니다.

  • 옵션이 존재하는 경우, /etc/default/grub 파일의 GRUB_CMDLINE_LINUX 줄에, 또는 /boot/grub/menu.lst의 커널에 net.ifnames=0 옵션을 추가하여 예측 가능한 인터페이스 이름 지정을 비활성화합니다.

  • 파일이 존재하는 경우 해당 /etc/udev/rules.d/70-persistent-net.rules 파일을 제거합니다. 파일을 제거하기 전에 자동화를 통해 경로 /etc/udev/rules.d/에 파일 백업본이 생성됩니다.

모든 요구 사항을 확인한 후, 인스턴스 유형이 지정한 Nitro 인스턴스 유형으로 변경됩니다. 자동화는 Nitro 인스턴스 유형으로 시작한 후 새로 생성한 인스턴스가 모든 상태 검사를 통과할 때까지 기다립니다. 그런 다음, 자동화는 지정된 보안 주체의 승인을 기다려서 성공적으로 시작된 Nitro 인스턴스의 AMI을 생성합니다. 승인이 거부되면, 자동화가 종료되고 새로 생성한 인스턴스는 계속 실행되며 대상 인스턴스는 중지된 상태로 유지됩니다.

루트 Amazon EBS 볼륨 교체

FullMigrationOperationType로 선택하면 자동화가 대상 Amazon EC2 인스턴스를 지정한 Nitro 인스턴스 유형으로 마이그레이션합니다. 자동화는 지정된 보안 주체에게 승인을 요청하여 대상 Amazon EC2 인스턴스의 루트 Amazon EBS 볼륨을 복제된 Amazon EC2 인스턴스의 루트 볼륨으로 교체합니다. 마이그레이션이 성공한 후, 복제된 Amazon EC2 인스턴스가 종료됩니다. 자동화가 실패할 경우, 원래 Amazon EBS 루트 볼륨이 대상 Amazon EC2 인스턴스에 연결됩니다. 대상 Amazon EC2 인스턴스에 연결된 루트 Amazon EBS 볼륨에 aws: 접두사가 적용된 태그가 있는 경우 FullMigration 작업이 지원되지 않습니다.

시작하기 전에

대상 인스턴스는 아웃바운드 인터넷 액세스 권한이 있어야 합니다. 이는 kernel-devel, gcc, patch, rpm-build, wget, dracut, make, linux-headers 및 unzip 같은 드라이버 및 종속 항목의 리포지토리에 액세스하기 위한 것입니다. 필요한 경우 패키지 관리자를 사용합니다.

승인 및 업데이트 알림을 보내려면 Amazon SNS 주제가 필요합니다. Amazon SNS 주제 생성 방법에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 안내서Amazon SNS 주제 생성을 참조하세요.

이 실행서는 다음 운영 체제를 지원합니다.

  • RHEL 7.x - 8.5

  • Amazon Linux (2018.03), Amazon Linux 2

  • Debian 서버

  • Ubuntu Server 18.04 LTS, 20.04 LTS 및 20.10 STR

  • SUSE Linux Enterprise Server (SUSE12SP5, SUSE15SP2)

이 자동화 실행(콘솔)

문서 유형

자동화

소유자

Amazon

플랫폼

Linux

파라미터

  • AutomationAssumeRole

    유형: 문자열

    설명: (선택 사항) 사용자를 대신하여 Systems Manager Automation을 통해 작업을 수행할 수 있도록 허용하는 AWS Identity and Access Management(IAM) 역할의 Amazon 리소스 이름(ARN)입니다. 역할을 지정하지 않은 경우, Systems Manager Automation에서는 이 실행서를 시작하는 사용자의 권한을 사용합니다.

  • 확인

    유형: 문자열

    설명: (필수) 이 자동화 실행서에서 수행한 작업의 전체 세부 정보를 읽고 실행서 사용을 계속하려면 Yes, I understand and acknowledge을 입력하세요.

  • ApproverIAM

    유형: 문자열

    설명: (필수) 자동화에 대한 승인을 제공할 수 있는 IAM 역할, 사용자 또는 사용자 이름의 ARN입니다. 최대 10개의 승인자를 지정할 수 있습니다.

  • DeleteResourcesOnFailure

    유형: 부울

    설명: (선택 사항) 자동화가 실패할 경우 새로 생성한 인스턴스와 마이그레이션용 AMI을 삭제할지 여부를 결정합니다.

    유효한 값: True | False

    기본값: True

  • MinimumRequiredApprovals

    유형: 문자열

    설명: (선택 사항) 승인 요청 시 자동화를 계속 실행하는 데 필요한 최소 승인 수입니다.

    유효한 값: 1~10

    기본값: 1

  • NitroInstanceType

    유형: 문자열

    설명: (필수) 인스턴스를 변경하려는 Nitro 인스턴스 유형입니다. 지원되는 인스턴스 유형에는 M5, M6, C5, C6, R5, R6, T3이 포함됩니다.

    기본값: m5.xlarge

  • OperationType

    유형: 문자열

    설명: (필수) 수행하려는 작업입니다. 이 FullMigration 옵션은 Clone&Migrate와 동일한 작업을 수행하며 대상 인스턴스의 루트 볼륨을 추가로 대체합니다. 대상 인스턴스의 루트 볼륨은 다음 마이그레이션 프로세스에 따라 새로 생성한 인스턴스의 루트 볼륨으로 대체됩니다. 이 FullMigration 작업은 논리적 볼륨 관리자(LVM)에서 정의한 루트 볼륨을 지원하지 않습니다.

    유효한 값: Clone&Migrate | FullMigration

  • SNSTopicArn

    유형: 문자열

    설명: (필수) 알림을 게시할 Amazon SNS 주제의 ARN입니다. Amazon SNS 주제는 자동화 도중 필수 승인 알림을 보내는 데 사용됩니다.

  • TargetInstanceId

    유형: 문자열

    설명: (필수) 마이그레이션하려는 Amazon EC2 인스턴스의 ID입니다.

필수 IAM 권한

실행서를 성공적으로 사용하려면 AutomationAssumeRole 파라미터에 다음 작업이 필요합니다.

  • ssm:DescribeAutomationExecutions

  • ssm:StartAutomationExecution

  • ssm:DescribeInstanceInformation

  • ssm:DescribeAutomationStepExecutions

  • ssm:SendCommand

  • ssm:GetAutomationExecution

  • ssm:ListCommands

  • ssm:ListCommandInvocations

  • ec2:DescribeInstances

  • ec2:DescribeInstanceTypeOfferings

  • ec2:DescribeInstanceTypes

  • ec2:DescribeImages

  • ec2:CreateImage

  • ec2:RunInstances

  • ec2:DescribeInstanceStatus

  • ec2:DeregisterImage

  • ec2:DeleteSnapshot

  • ec2:TerminateInstances

  • ec2:StartInstances

  • ec2:DescribeKeyPairs

  • ec2:StopInstances

  • kms:CreateGrant*

  • kms:ReEncrypt

  • ec2:ModifyInstanceAttribute

  • autoscaling:DescribeAutoScalingInstances

  • iam:passRole

  • iam:ListRoles

문서 단계

  • startOfPreliminaryChecksBranch - 예비 검사 워크플로로 분기합니다.

  • getTargetInstanceProperties - 대상 인스턴스에서 세부 정보를 수집합니다.

  • checkIfNitroInstanceTypeIsSupportedInAZ - 대상 Amazon EC2 인스턴스 유형이 대상 인스턴스와 동일한 가용 영역에서 지원되는지 확인합니다.

  • getXenInstanceTypeDetails - 소스 인스턴스 유형에 대한 세부 정보를 수집합니다.

  • checkIfInstanceHypervisorIsNitroAlready - 대상 인스턴스가 이미 Nitro 인스턴스 유형으로 실행 중인지 확인합니다.

  • checkIfTargetInstanceLifecycleIsSpot - 대상 인스턴스의 구매 옵션이 Spot인지 확인합니다.

  • checkIfOperatingSystemIsLinux - 대상 인스턴스 OS가 Linux인지 확인합니다.

  • verifySSMConnectivityForTargetInstance - 대상 인스턴스가 Systems Manager에서 관리되고 있는지 확인합니다.

  • checkIfEphemeralVolumeAreSupported - 대상 인스턴스의 현재 인스턴스 유형이 인스턴스 스토어 볼륨을 지원하는지 확인합니다.

  • verifyIfTargetInstanceHasEphemeralVolumesAttached - 대상 인스턴스에 인스턴스 스토어 볼륨이 연결되어 있는지 확인합니다.

  • checkIfRootVolumeIsEBS - 대상 인스턴스의 루트 볼륨 유형이 EBS인지 확인합니다.

  • checkIfTargetInstanceIsInASG - 대상 인스턴스가 Auto Scaling 그룹의 일부인지 확인합니다.

  • endOfPreliminaryChecksBranch - 예비 검사 브랜치를 종료합니다.

  • startOfTestBranch - 테스트 워크플로로 분기합니다.

  • createTestImage - 대상 인스턴스의 테스트 AMI를 생성합니다.

  • launchTestInstanceInSameSubnet - 대상 인스턴스와 동일한 구성을 사용하여 테스트 AMI에서 테스트 인스턴스를 시작합니다.

  • cleanupTestInstance - 테스트 인스턴스를 종료합니다.

  • endOfTestBranch - 테스트 브랜치를 종료합니다.

  • checkIfTestingBranchSucceeded - 테스트 브랜치의 상태를 확인합니다.

  • approvalToStopTargetInstance - 대상 인스턴스를 중지하기 위해 지정된 보안 주체의 승인을 기다립니다.

  • stopTargetEC2Instance - 대상 인스턴스를 중지합니다.

  • forceStopTargetEC2Instance - 이전 단계에서 인스턴스를 중지하지 못한 경우에만 대상 인스턴스를 강제 중지합니다.

  • startOfCloneAndMigrateBranch - Clone&Migrate 워크플로로 분기합니다.

  • createBackupImage - 백업으로 사용할 대상 인스턴스의 AMI를 생성합니다.

  • launchInstanceInSameSubnet - 소스 인스턴스와 동일한 구성을 사용하여 백업 AMI에서 새 인스턴스를 시작합니다.

  • waitForClonedInstanceToPassStatusChecks - 새로 생성한 인스턴스가 모든 상태 검사를 통과할 때까지 기다립니다.

  • verifySSMConnectivityForClonedInstance - 새로 생성한 인스턴스가 Systems Manager에서 관리되는지 확인합니다.

  • checkAndInstallENADrivers - 새로 생성한 인스턴스에 ENA 드라이버가 설치되어 있는지 확인하고 필요한 경우 드라이버를 설치합니다.

  • checkAndAddNVMEDrivers - 새로 생성한 인스턴스에 NVMe 드라이버가 설치되어 있는지 확인하고 필요한 경우 드라이버를 설치합니다.

  • checkAndModifyFSTABEntries - 디바이스 이름이 /etc/fstab에서 사용되었는지 확인하고 필요한 경우 UUID로 대체합니다.

  • stopClonedInstance - 새로 생성한 인스턴스를 중지합니다.

  • forceStopClonedInstance - 이전 단계에서 인스턴스를 중지하지 못한 경우에만 새로 생성한 인스턴스를 강제 중지합니다.

  • checkENAAttributeForClonedInstance - 새로 생성한 인스턴스에 향상된 네트워킹 속성이 켜져 있는지 확인합니다.

  • setNitroInstanceTypeForClonedInstance - 새로 생성한 인스턴스의 인스턴스 유형을 지정하는 Nitro 인스턴스 유형으로 변경합니다.

  • startClonedInstance - 인스턴스 유형을 변경한 새로 생성한 인스턴스를 시작합니다.

  • approvalForCreatingImageAfterDriversInstallation - 인스턴스가 Nitro 인스턴스 유형으로 성공적으로 시작되면 자동화는 필수 보안 주체의 승인을 기다립니다. 승인이 제공되면 Golden AMI로 사용할 AMI을 생성합니다.

  • createImageAfterDriversInstallation - Golden AMI으로 사용할 AMI를 생성합니다.

  • endOfCloneAndMigrateBranch - Clone&Migrate 브랜치를 종료합니다.

  • cleanupTestImage - 테스트를 위해 생성된 AMI의 등록을 해제합니다.

  • failureHandling - 실패 시 리소스를 종료하도록 선택했는지 확인합니다.

  • onFailureTerminateClonedInstance - 자동화가 실패하면 새로 생성한 인스턴스를 종료합니다.

  • onFailurecleanupTestImage - 테스트를 위해 생성된 AMI의 등록을 해제합니다.

  • onFailureApprovalToStartTargetInstance - 자동화가 실패하면 지정된 보안 주체의 승인을 기다려 대상 인스턴스를 시작합니다.

  • onFailureStartTargetInstance - 자동화가 실패하면 대상 인스턴스를 시작합니다.

필수 IAM 권한

실행서를 성공적으로 사용하려면 AutomationAssumeRole 파라미터에 다음 작업이 필요합니다.

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeInstanceInformation

  • ssm:DescribeAutomationStepExecutions

  • ssm:SendCommand

  • ssm:GetAutomationExecution

  • ssm:ListCommands

  • ssm:ListCommandInvocations

  • ec2:DescribeInstances

  • ec2:DescribeInstanceTypeOfferings

  • ec2:DescribeInstanceTypes

  • ec2:DescribeImages

  • ec2:CreateImage

  • ec2:RunInstances

  • ec2:DescribeInstanceStatus

  • ec2:DeregisterImage

  • ec2:DeleteSnapshot

  • ec2:TerminateInstances

  • ec2:StartInstances

  • ec2:DescribeKeyPairs

  • ec2:StopInstances

  • kms:CreateGrant*

  • kms:ReEncrypt

  • ec2:ModifyInstanceAttribute

  • ec2:DetachVolume

  • ec2:AttachVolume

  • ec2:DescribeVolumes

  • autoscaling:DescribeAutoScalingInstances

  • iam:PassRole

  • ec2:CreateTags

  • cloudformation:DescribeStackResources

문서 단계

FullMigration 워크플로는 Clone&Migrate 워크플로와 동일한 단계를 실행하며 다음 단계를 추가로 수행합니다.

  • checkConcurrency - 지정하는 Amazon EC2 인스턴스를 대상으로 하는 이 실행서의 자동화가 하나뿐인지 확인합니다. 실행서에서 동일한 인스턴스를 대상으로 진행 중인 또 다른 자동화가 발견되면 자동화가 종료됩니다.

  • getTargetInstanceProperties - 대상 인스턴스에서 세부 정보를 수집합니다.

  • checkRootVolumeTags - 대상 Amazon EC2 인스턴스의 루트 볼륨에 AWS 예약된 태그가 포함되어 있는지 확인합니다.

  • cloneTargetInstanceAndMigrateToNitro - AWS-CloneXenInstanceToNitro 실행서를 사용하여 하위 자동화를 시작합니다.

  • branchOnTheOperationType - OperationType 파라미터에 지정한 값을 기반으로 분기합니다.

  • getClonedInstanceId - 하위 자동화에서 새로 시작한 인스턴스의 ID를 검색합니다.

  • checkIfRootVolumeIsBasedOnLVM - 루트 파티션을 LVM에서 관리하는지 여부를 결정합니다.

  • branchOnTheRootVolumeLVMStatus - 보안 주체부터 필요한 최소 승인을 받으면 자동화가 루트 볼륨 교체를 진행합니다.

  • manualInstructionsInCaseOfLVM - LVM에서 루트 볼륨을 관리하는 경우, 자동화는 루트 볼륨을 수동으로 교체하는 방법에 대한 지침이 포함된 출력본을 보냅니다.

  • startOfReplaceRootEBSVolumeBranch - 루트 EBS 볼륨 교체 브랜치 워크플로를 시작합니다.

  • checkIfTargetInstanceIsManagedByCFN - 대상 인스턴스가 AWS CloudFormation 스택으로 관리되는지 여부를 결정합니다.

  • branchOnCFNStackStatus - CloudFormation 스택의 상태를 기반으로 분기합니다.

  • approvalForRootVolumesReplacement(WithCFN) - 대상 인스턴스가 CloudFormation에서 시작된 경우 자동화는 새로 시작된 인스턴스가 Nitro 인스턴스 유형으로 성공적으로 시작된 후 승인을 기다립니다. 승인이 제공되면 대상 인스턴스의 Amazon EBS 볼륨이 새로 시작된 인스턴스의 루트 볼륨으로 교체됩니다.

  • approvalForRootVolumesReplacement - 새로 시작한 인스턴스가 Nitro 인스턴스 유형으로 성공적으로 시작된 후 승인을 기다립니다. 승인이 제공되면 대상 인스턴스의 Amazon EBS 볼륨이 새로 시작된 인스턴스의 루트 볼륨으로 교체됩니다.

  • assertIfTargetEC2InstanceIsStillStopped - 루트 볼륨을 교체하기 전에 대상 인스턴스가 stopped 상태인지 확인합니다.

  • stopTargetInstanceForRootVolumeReplacement - 대상 인스턴스가 실행 중인 경우, 자동화는 루트 볼륨을 교체하기 전에 인스턴스를 중지합니다.

  • forceStopTargetInstanceForRootVolumeReplacement - 이전 단계가 실패할 경우 대상 인스턴스를 강제 중지합니다.

  • stopClonedInstanceForRootVolumeReplacement - Amazon EBS 볼륨을 교체하기 전에 새로 생성한 인스턴스를 중지합니다.

  • forceStopClonedInstanceForRootVolumeReplacement - 이전 단계가 실패할 경우 새로 생성한 인스턴스를 강제 중지합니다.

  • getBlockDeviceMappings - 대상 인스턴스와 새로 생성된 인스턴스 모두에 대한 블록 디바이스 매핑을 검색합니다.

  • replaceRootEbsVolumes - 대상 인스턴스의 루트 볼륨을 새로 생성된 인스턴스의 루트 볼륨으로 교체합니다.

  • EndOfReplaceRootEBSVolumeBranch - 루트 EBS 볼륨 교체 브랜치 워크플로를 종료합니다.

  • checkENAAttributeForTargetInstance - 대상 Amazon EC2 인스턴스에 대해 향상된 네트워킹(ENA) 속성이 켜져 있는지 확인합니다.

  • enableENAAttributeForTargetInstance - 필요한 경우 대상 Amazon EC2 인스턴스의 ENA 속성을 활성화합니다.

  • setNitroInstanceTypeForTargetInstance - 대상 인스턴스를 지정한 Nitro 인스턴스 유형으로 변경합니다.

  • replicateRootVolumeTags - 대상 Amazon EC2 인스턴스에서 루트 Amazon EBS 볼륨에 태그를 복제합니다.

  • startTargetInstance - 인스턴스 유형을 변경한 후 대상 Amazon EC2 인스턴스를 시작합니다.

  • onFailureStopTargetEC2Instance - 대상 Amazon EC2 인스턴스가 Nitro 인스턴스 유형으로 시작되지 않을 경우 이를 중지합니다.

  • onFailureForceStopTargetEC2Instance - 이전 단계가 실패할 경우 대상 Amazon EC2 인스턴스를 강제 중지합니다.

  • OnFailureRevertOriginalInstanceType - 대상 인스턴스가 Nitro 인스턴스 유형으로 시작하지 못할 경우 대상 Amazon EC2 인스턴스를 원래 인스턴스 유형으로 되돌립니다.

  • onFailureRollbackRootVolumeReplacement - 필요한 경우 replaceRootEbsVolumes단계에서 변경한 내용을 모두 되돌립니다.

  • onFailureApprovalToStartTargetInstance - 이전 변경 내용을 롤백한 후 대상 Amazon EC2 인스턴스를 시작하도록 지정된 보안 주체의 승인을 기다립니다.

  • onFailureStartTargetInstance - 대상 Amazon EC2 인스턴스를 시작합니다.

  • terminateClonedEC2Instance - 루트 Amazon EBS 볼륨을 교체한 후 복제된 Amazon EC2 인스턴스를 종료합니다.