Atualizar uma AMI Linux - AWS Systems Manager

Atualizar uma AMI Linux

Esta demonstração do Systems Manager Automation mostra como usar o console ou a AWS CLI e o runbook AWS-UpdateLinuxAmi para atualizar uma AMI 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 software da Amazon em um Amazon Linux, Red Hat Enterprise Linux, Ubuntu Server, SUSE Linux Enterprise Server 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.

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. Se você especificar o nome do recurso da Amazon (ARN), a automação falhará.

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 ações de automação, 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:

  • Baixa um script de atualização do 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 Gerado pelo EC2 Automation em {{global:DATE_TIME}} do {{SourceAmiId}}” DATE_TIME e SourceID representam variáveis do Automation.

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 (AWS Systems Manager)
  1. Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/.

  2. No painel de navegação à esquerda, escolha Automation (Automação).

  3. Escolha Execute automation.

  4. Na lista Automation document (Documento de automação), escolha AWS-UpdateLinuxAmi.

  5. Na seção Detalhes do documento, verifique se a Versão do documento está definida como Versão padrão no runtime.

  6. Escolha Próximo.

  7. Na seção Execution mode (Modo de execução), escolha Simple Execution (Execução simples).

  8. Na seção Input parameters (Parâmetros de entrada), insira as informações coletadas na seção Before you begin (Antes de começar).

  9. Clique em Executar. O console exibe o status de execução da 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.