Atualizar o AMIs - AWS Systems Manager

Atualizar o AMIs

Os tutoriais a seguir explicam como atualizar as Amazon Machine Image (AMIs) para incluir os patches mais recentes.

Atualizar uma AMI (AWS CLI) Linux

Esta demonstração do AWS Systems Manager Automation mostra como usar a AWS Command Line Interface (AWS CLI) e o runbook AWS-UpdateLinuxAmi do Systems Manager para aplicar patches automaticamente a uma Amazon Machine Image (AMI) do Linux com as versões mais atualizadas dos pacotes especificados. O Automation é um recurso do AWS Systems Manager. O runbook AWS-UpdateLinuxAmi também automatiza a instalação de pacotes e configurações adicionais específicos de sites. Você pode atualizar várias distribuições do Linux usando esta demonstração, incluindo Ubuntu Server, CentOS, RHEL, SLES ou AMIs do Amazon Linux. Para obter uma lista completa das versões compatíveis do Linux, consulte Pré-requisitos da Patch Manager.

O runbook AWS-UpdateLinuxAmi permite automatizar tarefas de manutenção de imagens sem precisar criar o runbook em JSON ou YAML. Você pode usar o runbook AWS-UpdateLinuxAmi para realizar os seguintes tipos de tarefas:

  • Atualize todos os pacotes de distribuição e o software da Amazon em um Amazon Linux, Red Hat Enterprise Linux, Ubuntu Server, SLES ou CentOS Amazon Machine Image (AMI). Esse é o comportamento padrão do runbook.

  • Instale o AWS Systems Manager SSM Agent em uma imagem existente para habilitar os recursos do Systems Manager, como a execução remota de comandos usando o AWS Systems Manager Run Command ou a coleta de inventário de software usando o Inventory.

  • Instalar pacotes de software adicionais.

Antes de começar

Antes de começar a trabalhar com runbooks, configure funções e, opcionalmente, o EventBridge para o Automation. Para ter mais informações, consulte Configurar a automação. Esta demonstração também requer que você especifique o nome de um perfil de instância do AWS Identity and Access Management (IAM). Para obter mais informações sobre como criar um perfil de instância do IAM, consulte Configurar permissões de instância obrigatórias para o Systems Manager.

O runbook AWS-UpdateLinuxAmi aceita os seguintes parâmetros de entrada:

Parâmetro Tipo Descrição

SourceAmiId

String

(Obrigatório) O ID da AMI de origem. Você pode fazer referência automaticamente ao ID mais recente de uma AMI do Amazon EC2 para Linux usando um parâmetro público do AWS Systems Manager Parameter Store . Para obter mais informações, consulte Consultar os IDs de AMI do Amazon Linux mais recentes usando o AWS Systems Manager Parameter Store.

IamInstanceProfileName

String

(Obrigatório) O nome do perfil para o perfil de instância do IAM criado em Configurar permissões de instância obrigatórias para o Systems Manager. A função de perfil de instância concede ao Automation permissão para realizar ações em suas instâncias, como executar comandos ou iniciar e interromper serviços. O runbook usa apenas o nome da função de perfil da instância.

AutomationAssumeRole

String

(Obrigatório) O nome da função de serviço do IAM que você criou em Configurar a automação. A função de serviço (também chamada de função assumida) concede ao Automation permissão para assumir sua função do IAM e realizar ações em seu nome. Por exemplo, a função de serviço permite que o Automation crie uma nova AMI ao executar a ação aws:createImage em um runbook. Para esse parâmetro, o ARN completo deve ser especificado.

TargetAmiName

String

(Opcional) O nome da nova AMI após a sua criação. O nome padrão é uma string gerada pelo sistema que inclui o ID da AMI de origem, bem como a data e a hora de criação.

InstanceType

String

(Opcional) O tipo de instância a ser executada como o host do espaço de trabalho. Os tipos de instância variam de acordo com a região. O tipo padrão é t2.micro.

PreUpdateScript

String

(Opcional) URL de um script a ser executado antes de as atualizações serem aplicadas. O padrão (\"none\") é não executar um script.

PostUpdateScript

String

(Opcional) URL de um script a ser executado depois de as atualizações de pacote serem aplicadas. O padrão (\"none\") é não executar um script.

IncludePackages

String

(Opcional) Somente atualiza esses pacotes nomeados. Por padrão (\"all\"), todas as atualizações disponíveis são aplicadas.

ExcludePackages

String

(Opcional) Nomes de pacotes para evitar atualizações, em todas as condições. Por padrão (\"none\"), nenhum pacote é excluído.

Etapas da Automação

O runbook AWS-UpdateLinuxAmi inclui as seguintes etapas, por padrão.

Etapa 1: launchInstance (ação aws:runInstances)

Esta etapa executa uma instância usando dados de usuário do Amazon Elastic Compute Cloud (Amazon EC2) e uma função de perfil de instância do IAM. Os dados de usuário instalam o SSM Agent apropriado, com base no sistema operacional. Instalar o SSM Agent permite que você utilize recursos do Systems Manager, como o Run Command, State Manager e Inventory.

Etapa 2: updateOSSoftware (ação aws:runCommand)

Essa etapa executa os seguintes comandos na instância executada:

  • Baixe um script de atualização do Amazon Simple Storage Service (Amazon S3).

  • Executa um script de pré-atualização opcional.

  • Atualiza pacotes de distribuição e softwares da Amazon.

  • Executa um script de pós-atualização opcional.

O log de execução é armazenado na pasta /tmp para que o usuário possa visualizá-lo mais tarde.

Se quiser atualizar um conjunto específico de pacotes, forneça a lista usando o parâmetro IncludePackages. Quando essa lista é fornecida, o sistema tenta atualizar somente esses pacotes e suas dependências. Nenhuma outra atualização é realizada. Por padrão, quando nenhum pacote de inclusão é especificado, o programa atualiza todos os pacotes disponíveis.

Se quiser excluir a atualização de um conjunto específico de pacotes, forneça a lista ao parâmetro ExcludePackages. Se essa lista for fornecida, os pacotes permanecerão na sua versão atual, independentemente de qualquer outra opção especificada. Por padrão, quando nenhum pacote de exclusão é especificado, nenhum pacote é excluído.

Etapa 3: stopInstance (ação aws:changeInstanceState)

Essa etapa interrompe a instância atualizada.

Etapa 4: createImage (ação aws:createImage)

Essa etapa cria uma nova AMI com um nome descritivo que a vincula ao ID de origem e ao horário de criação. Por exemplo: “AMI Generated by EC2 Automation on {{global:DATE_TIME}} from {{SourceAmiId}}” em que DATE_TIME e SourceID representam variáveis de Automação.

Etapa 5: terminateInstance (ação aws:changeInstanceState)

Essa etapa limpa a automação, encerrando a instância em execução.

Saída

A automação retorna o novo ID da AMI como resultado.

nota

Por padrão, quando o Automation executa o runbook AWS-UpdateLinuxAmi, o sistema cria uma instância temporária na VPC padrão (172.30.0.0/16). Se tiver excluído a VPC padrão, você receberá o seguinte erro:

VPC not defined 400

Para resolver esse problema, você deve fazer uma cópia do runbook AWS-UpdateLinuxAmi e especificar um ID de sub-rede. Para ter mais informações, consulte VPC não definida 400.

Para criar uma AMI com patch aplicado usando o Automation
  1. Instale e configure a AWS Command Line Interface (AWS CLI), caso ainda não o tenha feito.

    Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI.

  2. Execute o comando a seguir para executar o runbook AWS-UpdateLinuxAmi. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    aws ssm start-automation-execution \ --document-name "AWS-UpdateLinuxAmi" \ --parameters \ SourceAmiId=AMI ID, \ IamInstanceProfileName=IAM instance profile, \ AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

    O comando retorna um ID de execução. Copie esse ID para a área de transferência. Você usará esse ID para visualizar o status da automação.

    { "AutomationExecutionId": "automation execution ID" }
  3. Para visualizar a automação usando a AWS CLI, execute o seguinte comando:

    aws ssm describe-automation-executions
  4. Para visualizar detalhes sobre o andamento da automação, execute o comando a seguir. Substitua automation execution ID (ID de execução da automação) por suas próprias informações.

    aws ssm get-automation-execution --automation-execution-id automation execution ID

    O processo de atualização pode demorar 30 minutos ou mais para ser concluído.

    nota

    Você pode também monitorar o status da automação no console. Na lista, escolha a automação que você acabou de processar e depois escolha a guia Steps (Etapas). Esta guia mostra o status das ações de automação.

Após a conclusão da automação, execute uma instância de teste da AMI atualizada para verificar as alterações.

nota

Se alguma etapa da automação falhar, as informações sobre a falha serão listadas na página Automation Executions (Execuções do Automation). A automação foi concebida para terminar a instância temporária após a conclusão bem-sucedida de todas as tarefas. Se uma etapa falhar, o sistema talvez não encerre a instância. Então, se uma etapa falhar, encerre manualmente a instância temporária.