AWSSupport-MigrateXenToNitroLinux - AWS Systems Manager Referência do runbook de automação

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWSSupport-MigrateXenToNitroLinux

Descrição

O runbook AWSSupport-MigrateXenToNitroLinux clona, prepara e migra uma instância Linux Xen do Amazon Elastic Compute Cloud (Amazon EC2) para um tipo de instância Nitro. Este runbook fornece duas opções para tipos de operação:

  • Clone&Migrate: Esse workflow de opção consiste nas fases verificações preliminares, testes e Clone&Migrate. O workflow é executado usando o runbook AWSSupport-CloneXenEC2InstanceAndMigrateToNitro.

  • FullMigration: essa opção executa o runflow Clone&Migrate e, em seguida, executa a etapa adicional de Substituir volumes raiz do Amazon EBS.

Importante

O uso desse runbook gera custos para sua conta do tempo de execução das instâncias do Amazon EC2, criação de volumes do Amazon Elastic Block Store (Amazon EBS) e AMIs. Para obter mais detalhes, consulte Amazon EC2 Pricing e Amazon EBS Pricing.

Verificações preliminares

A automação realiza as seguintes verificações preliminares antes de continuar com a migração. Se alguma das verificações falha, a automação é encerrada. Essa fase é apenas parte do workflow Clone&Migrate.

  • Verifica se a instância de destino já é um tipo de instância Nitro.

  • Verifica se a opção de compra de instâncias spot foi usada para a instância de destino.

  • Verifica se os volumes de armazenamento de instâncias estão anexados à instância de destino.

  • Verifica se a instância do sistema operacional de destino é Linux.

  • Verifica se a instância de destino faz parte de um grupo do Amazon EC2 Auto Scaling. Se fizer parte de um grupo do Auto Scaling, a automação verifica se a instância está no estado standby.

  • Verifica se a instância é gerenciada pelo AWS Systems Manager.

no dispositivo

A automação cria um Amazon Machine Image (AMI) a partir da instância de destino e inicia uma instância de teste a partir da AMI recém-criada. Essa fase é apenas parte do workflow Clone&Migrate.

Se a instância de teste passar por todas as verificações de status, a automação será interrompida e a aprovação das entidades principais designadas será solicitada por meio de notificação do Amazon Simple Notification Service (Amazon SNS). Se a aprovação for fornecida, a automação encerra a instância de teste, interrompe a instância de destino e continua com a migração, enquanto o registro da AMI recém-criada é cancelado no final do workflow Clone&Migrate.

nota

Antes de fornecer a aprovação, recomendamos verificar se todos os aplicativos em execução na instância de destino foram fechados corretamente.

Clonar e migrar

A automação cria outra AMI a partir da instância de destino e inicia uma nova instância para mudar para um tipo de instância Nitro. A automação conclui as seguintes verificações preliminares antes de continuar com a migração. Se alguma das verificações falha, a automação é encerrada. Essa fase também é apenas parte do workflow Clone&Migrate.

  • Ativa o atributo de redes avançadas (ENA).

  • Instala a versão mais recente dos drivers ENA, se ainda não estiverem instalados, ou atualiza a versão dos drivers ENA para a versão mais recente. Para garantir o máximo desempenho da rede, é necessário atualizar para a versão mais recente do driver ENA se o tipo de instância Nitro for da 6ª geração.

  • Verifica se o módulo NVMe está instalado. Se o módulo estiver instalado, a automação verificará se o módulo está carregado em initramfs.

  • Analisa /etc/fstab e substitui entradas por nomes de dispositivos de blocos (/dev/sd* ou /dev/xvd*) por seus respectivos UUIDs. Antes de modificar a configuração, a automação cria um backup do arquivo no caminho /etc/fstab*.

  • Desativa a nomenclatura previsível da interface adicionando a opção net.ifnames=0 à linha GRUB_CMDLINE_LINUX no arquivo /etc/default/grub, se ela existir, ou ao kernel em /boot/grub/menu.lst.

  • Remove o arquivo /etc/udev/rules.d/70-persistent-net.rules, se ele existir. Antes de remover o arquivo, a automação cria um backup do arquivo no caminho /etc/udev/rules.d/.

Depois de verificar todos os requisitos, o tipo de instância é alterado para o tipo de instância Nitro que você especificar. A automação espera que a instância recém-criada passe por todas as verificações de status depois de começar como um tipo de instância Nitro. Em seguida, a automação aguarda a aprovação das entidades principais designadas para criar uma AMI das instâncias Nitro iniciadas com sucesso. Se a aprovação for negada, a automação será encerrada, deixando a instância recém-criada em execução e a instância de destino permanecerá parada.

Substituir um volume do Amazon EBS

Se você escolher FullMigration como OperationType, a automação migrará a instância de destino do Amazon EC2 para o tipo de instância Nitro que você especificar. A automação solicita aprovação das entidades principais designadas para substituir o volume raiz do Amazon EBS da instância de destino do Amazon EC2 pelo volume raiz da instância clonada do Amazon EC2. Depois que a migração for bem-sucedida, a instância clonada do Amazon EC2 será encerrada. Se a automação falhar, o volume raiz original do Amazon EBS será anexado à instância de destino do Amazon EC2. Se o volume raiz do Amazon EBS anexado à instância do Amazon EC2 de destino tiver tags com o prefixo aws: aplicado, a operação FullMigration não será suportada.

Antes de começar

A instância de destino deve ter acesso de saída à internet. Isso serve para acessar repositórios de drivers e dependências como kernel-devel, gcc, patch, rpm-build, wget, dracut, make, linux-headers e unzip. O gerenciador de pacotes é usado se necessário.

É necessário um tópico do Amazon SNS para enviar notificações de aprovações e atualizações. Para obter mais informações sobre como criar um tópico Amazon SNS, consulte Criar um tópico do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.

Este runbook é compatível com os seguintes sistemas operacionais:

  • RHEL 7.x - 8.5

  • Amazon Linux (2018.03), Amazon Linux 2

  • Debian Server

  • Ubuntu Server 18.04 LTS, 20.04 LTS e 20.10 STR

  • SUSE Linux Enterprise Server (SUSE12SP5, SUSE15SP2)

Execute esta automação (console)

Tipo de documento

Automation

Proprietário

Amazon

Plataformas

Linux

Parâmetros

  • AutomationAssumeRole

    Tipo: sequência

    Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.

  • Acknowledgement

    Tipo: sequência

    Descrição: (obrigatório) lê os detalhes completos das ações executadas por esse runbook de automação e insere Yes, I understand and acknowledge para continuar usando o runbook.

  • ApproverIAM

    Tipo: sequência

    Descrição: (obrigatório) os ARNs dos perfis, usuários ou nomes de usuário do IAM que podem fornecer aprovações para a automação. Você pode especificar um máximo de 10 aprovadores.

  • DeleteResourcesOnFailure

    Tipo: booliano

    Descrição: (opcional) determina se a instância e a AMI recém-criadas para a migração serão excluídas se a automação falhar.

    Valores válidos: True | False

    Padrão: True

  • MinimumRequiredApprovals

    Tipo: sequência

    Descrição: (opcional) o número mínimo de aprovações necessárias para continuar executando a automação quando as aprovações são solicitadas.

    Valores válidos: de 1 a 10

    Padrão: 1

  • NitroInstanceType

    Tipo: sequência

    Descrição: (obrigatório) o tipo de instância Nitro para o qual você deseja alterar a instância. Os tipos de instância compatíveis incluem M5, M6, C5, C6, R5, R6 e T3.

    Padrão: m5.xlarge

  • OperationType

    Tipo: sequência

    Descrição: (obrigatório) o operação que você deseja executar. A opção FullMigration executa as mesmas tarefas que Clone&Migrate e, além disso, substitui o volume raiz da sua instância de destino. O volume raiz da instância de destino é substituído pelo volume raiz da instância recém-criada após o processo de migração. A operação FullMigration não suporta volumes raiz definidos pelo Logical Volume Manager (LVM).

    Valores válidos: Clone&Migrate | FullMigration

  • SNSTopicArn

    Tipo: sequência

    Descrição: (obrigatório) o ARN do tópico do Amazon SNS no qual publicar a notificação. O tópico do Amazon SNS é usado para enviar as notificações de aprovação necessárias durante a automação.

  • TargetInstanceId

    Tipo: sequência

    Descrição: (obrigatório) o ID da instância do Amazon EC2.

Permissões obrigatórias do IAM

O parâmetro AutomationAssumeRole requer as seguintes ações para usar o runbook com êxito.

  • 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

Etapas do documento

  • startOfPreliminaryChecksBranch: ramifica o workflow de verificações preliminares.

  • getTargetInstanceProperties: reúne detalhes da instância de destino.

  • checkIfNitroInstanceTypeIsSupportedInAZ: determina se o tipo de instância de destino do Amazon EC2 é compatível com a mesma zona de disponibilidade da instância de destino.

  • getXenInstanceTypeDetails: reúne detalhes sobre o tipo de instância de origem.

  • checkIfInstanceHypervisorIsNitroAlready: verifica se a instância de destino já está sendo executada como um tipo de instância Nitro.

  • checkIfTargetInstanceLifecycleIsSpot: verifica se a opção de compra de instância de destino é Spot.

  • checkIfOperatingSystemIsLinux: verifica se o sistema operacional da instância de destino é Linux.

  • verifySSMConnectivityForTargetInstance: verifica se a instância de destino é gerenciada pelo Systems Manager.

  • checkIfEphemeralVolumeAreSupported: verifica se o tipo de instância atual da instância de destino é compatível com volumes de armazenamento de instância.

  • verifyIfTargetInstanceHasEphemeralVolumesAttached: verifica se a instância de destino tem volumes de armazenamento de instância anexados.

  • checkIfRootVolumeIsEBS: verifica se o tipo de volume raiz da instância de destino é EBS.

  • checkIfTargetInstanceIsInASG: verifica se a instância de destino faz parte de um grupo do Auto Scaling.

  • endOfPreliminaryChecksBranch: fim da ramificação de verificações preliminares.

  • startOfTestBranch: ramifica para o workflow de testes.

  • createTestImage: cria uma AMI de teste da instância de destino.

  • launchTestInstanceInSameSubnet: inicia uma instância de teste a partir da AMI de teste usando a mesma configuração da instância de destino.

  • cleanupTestInstance: encerra a instância de teste.

  • endOfTestBranch: fim da ramificação de testes.

  • checkIfTestingBranchSucceeded: verifica o status da ramificação de testes.

  • approvalToStopTargetInstance: aguarda a aprovação das entidades principais designadas para interromper a instância de destino.

  • stopTargetEC2Instance: interrompe a instância de destino.

  • forceStopTargetEC2Instance: força a interrupção da instância de destino somente se a etapa anterior não conseguir interromper a instância.

  • startOfCloneAndMigrateBranch: ramifica para o workflow Clone&Migrate.

  • createBackupImage: cria uma AMI da instância de destino para servir como backup.

  • launchInstanceInSameSubnet: inicia uma nova instância a partir da AMI de backup usando a mesma configuração da instância de origem.

  • waitForClonedInstanceToPassStatusChecks: espera que a instância recém-criada passe por todas as verificações de status.

  • verifySSMConnectivityForClonedInstance: verifica se a instância recém-criada é gerenciada pelo Systems Manager.

  • checkAndInstallENADrivers: verifica se os drivers ENA estão instalados na instância recém-criada e instala os drivers, se necessário.

  • checkAndAddNVMEDrivers: verifica se os drivers NVMe estão instalados na instância recém-criada e instala os drivers, se necessário.

  • checkAndModifyFSTABEntries: verifica se os nomes dos dispositivos são usados em /etc/fstab e os substitui por UUIDs, se necessário.

  • stopClonedInstance: interrompe a instância recém-criada.

  • forceStopClonedInstance: força a interrupção da instância recém-criada somente se a etapa anterior não conseguir interromper a instância.

  • checkENAAttributeForClonedInstance: verifica se o atributo de rede avançada está ativado para a instância recém-criada.

  • setNitroInstanceTypeForClonedInstance: altera o tipo de instância da instância recém-criada para o tipo de instância Nitro que você especificar.

  • startClonedInstance: inicia a instância recém-criada cujo tipo de instância você alterou.

  • approvalForCreatingImageAfterDriversInstallation: se a instância for iniciada com sucesso como um tipo de instância Nitro, a automação aguardará a aprovação das entidades principais necessárias. Se a aprovação for fornecida, uma AMI será criada para ser usada como Golden AMI.

  • createImageAfterDriversInstallation: cria uma AMI para ser usada como Golden AMI.

  • endOfCloneAndMigrateBranch: fim da ramificação Clone&Migrate.

  • cleanupTestImage: cancela o registro da AMI criada para teste.

  • failureHandling: verifica se você optou por encerrar recursos em caso de falha.

  • onFailureTerminateClonedInstance: encerra a instância recém-criada se a automação falhar.

  • onFailurecleanupTestImage: cancela o registro da AMI criada para teste.

  • onFailureApprovalToStartTargetInstance: se a automação falhar, aguarda a aprovação das entidades principais designadas para iniciar a instância de destino.

  • onFailureStartTargetInstance: se a automação falhar, inicia a instância de destino.

Permissões obrigatórias do IAM

O parâmetro AutomationAssumeRole requer as seguintes ações para usar o runbook com êxito.

  • 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

Etapas do documento

O workflow FullMigration executa as mesmas etapas do workflow Clone&Migrate e, além disso, executa as seguintes etapas:

  • checkConcurrency: verifica se há apenas uma automação desse runbook direcionada à instância do Amazon EC2 que você especificar. Se o runbook encontrar outra automação em andamento visando a mesma instância, a automação terminará.

  • getTargetInstanceProperties: reúne detalhes da instância de destino.

  • checkRootVolumeTags: determina se o volume raiz da instância de destino do Amazon EC2 contém alguma tag reservada da AWS.

  • cloneTargetInstanceAndMigrateToNitro: inicia uma automação secundária usando o runbook AWS-CloneXenInstanceToNitro.

  • branchOnTheOperationType: ramifica com base no valor que você especifica para o parâmetro OperationType.

  • getClonedInstanceId: recupera o ID da instância recém-iniciada da automação secundária.

  • checkIfRootVolumeIsBasedOnLVM: determina se a partição raiz é gerenciada pelo LVM.

  • branchOnTheRootVolumeLVMStatus: se as aprovações mínimas exigidas forem recebidas das entidades principais, a automação prosseguirá com a substituição do volume raiz.

  • manualInstructionsInCaseOfLVM: se o volume raiz for gerenciado pelo LVM, a automação enviará uma saída contendo instruções sobre como substituir manualmente os volumes raiz.

  • startOfReplaceRootEBSVolumeBranch: inicia o workflow da ramificação Substituir volume raiz do EBS.

  • checkIfTargetInstanceIsManagedByCFN: determina se a instância de destino é gerenciada por uma pilha do AWS CloudFormation.

  • branchOnCFNStackStatus: ramifica com base no status da pilha do CloudFormation.

  • approvalForRootVolumesReplacement(WithCFN): se a instância de destino foi iniciada pelo CloudFormation, a automação aguarda aprovação depois que a instância recém-iniciada tiver sucesso como um tipo de instância Nitro. Quando as aprovações são fornecidas, os volumes do Amazon EBS da instância de destino são substituídos pelos volumes raiz da instância recém-iniciada.

  • approvalForRootVolumesReplacement: aguarda a aprovação após a instância recém-iniciada ter sucesso como um tipo de instância Nitro. Quando as aprovações são fornecidas, os volumes do Amazon EBS da instância de destino são substituídos pelos volumes raiz da instância recém-iniciada.

  • assertIfTargetEC2InstanceIsStillStopped verifica se a instância de destino está em um estado stopped antes de substituir o volume raiz.

  • stopTargetInstanceForRootVolumeReplacement se a instância de destino estiver em execução, a automação interromperá a instância antes de substituir o volume raiz.

  • forceStopTargetInstanceForRootVolumeReplacement força a interrupção da instância de destino se a etapa anterior falhar.

  • stopClonedInstanceForRootVolumeReplacement interrompe a instância recém-criada antes de substituir os volumes do Amazon EBS.

  • forceStopClonedInstanceForRootVolumeReplacement força a interrupção da instância recém-criada se a etapa anterior falhar.

  • getBlockDeviceMappings recupera os mapeamentos de dispositivos de blocos para as instâncias de destino e recém-criadas.

  • replaceRootEbsVolumes substitui o volume raiz da instância de destino pelo volume raiz da instância recém-criada.

  • EndOfReplaceRootEBSVolumeBranch fim do workflow da ramificação Substituir volume raiz do EBS.

  • checkENAAttributeForTargetInstance verifica se o atributo de rede avançada (ENA) está ativado para a instância de destino do Amazon EC2.

  • enableENAAttributeForTargetInstance ativa o atributo ENA para a instância de destino do Amazon EC2, se necessário.

  • setNitroInstanceTypeForTargetInstance altera a instância de destino para o tipo de instância Nitro que você especificar.

  • replicateRootVolumeTags replica as tags no volume raiz do Amazon EBS da instância de destino do Amazon EC2.

  • startTargetInstance inicia a instância de destino do Amazon EC2 após alterar o tipo de instância.

  • onFailureStopTargetEC2Instance interrompe a instância de destino do Amazon EC2 se ela falhar ao iniciar como um tipo de instância Nitro.

  • onFailureForceStopTargetEC2Instance força a interrupção da instância de destino do Amazon EC2 se a etapa anterior falhar.

  • OnFailureRevertOriginalInstanceType reverte a instância de destino do Amazon EC2 para o tipo de instância original se a instância de destino não iniciar como um tipo de instância Nitro.

  • onFailureRollbackRootVolumeReplacement reverte todas as alterações feitas pela etapa replaceRootEbsVolumes, se necessário.

  • onFailureApprovalToStartTargetInstance aguarda a aprovação da entidade principal designada para iniciar a instância de destino do Amazon EC2 depois de reverter as alterações anteriores.

  • onFailureStartTargetInstance inicia a instância do Amazon EC2 de destino.

  • terminateClonedEC2Instance encerra a instância clonada do Amazon EC2 após substituir o volume raiz do Amazon EBS.