Demonstração: Criar uma janela de manutenção para atualizar o SSM Agent (AWS CLI) - AWS Systems Manager

Demonstração: Criar uma janela de manutenção para atualizar o SSM Agent (AWS CLI)

A demonstração a seguir explica como usar a AWS Command Line Interface (AWS CLI) para criar uma janela de manutenção do AWS Systems Manager. A demonstração também descreve como registrar os nós gerenciados como destinos e registrar uma tarefa Run Command do Systems Manager para atualizar o SSM Agent.

Antes de começar

Antes de concluir o procedimento a seguir, você deve ter permissões de administrador em nós que deseja configurar ou deve ter recebido as permissões apropriadas no AWS Identity and Access Management (IAM). Além disso, verifique se você tem pelo menos uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para Linux ou Windows Server em execução, que esteja configurada para o Systems Manager. Para mais informações, consulte Pré-requisitos do Systems Manager.

Etapa 1: introdução

Para executar comandos usando a AWS CLI

  1. Instale e configure a AWS Command Line Interface (AWS CLI), caso ainda não o tenha feito.

    Para obter mais informações, consulte Instalar ou atualizar ferramentas da linha de comando da AWS.

  2. Verifique se um nó está pronto para ser registrado como um destino para uma janela de manutenção.

    Execute o comando a seguir para ver quais nós estão online.

    aws ssm describe-instance-information --query "InstanceInformationList[*]"

    Execute o comando a seguir para ver detalhes sobre um nó específico.

    aws ssm describe-instance-information --instance-information-filter-list key=InstanceIds,valueSet=instance-id

Etapa 2: Criar a janela de manutenção

Use o procedimento a seguir para criar uma janela de manutenção e especificar suas opções básicas, como programação e duração.

Criar uma janela de manutenção (AWS CLI

  1. Abra a AWS CLI e execute os seguintes comandos para criar uma janela de manutenção que seja executada semanalmente aos domingos às 2hs, no fuso horário do Pacífico dos Estados Unidos, com um limite de 1 hora.

    Linux & macOS
    aws ssm create-maintenance-window \ --name "My-First-Maintenance-Window" \ --schedule "cron(0 2 ? * SUN *)" \ --duration 2 \ --schedule-timezone "America/Los_Angeles" \ --cutoff 1 \ --no-allow-unassociated-targets
    Windows
    aws ssm create-maintenance-window ^ --name "My-First-Maintenance-Window" ^ --schedule "cron(0 2 ? * SUN *)" ^ --duration 2 ^ --schedule-timezone "America/Los_Angeles" ^ --cutoff 1 ^ --no-allow-unassociated-targets

    Para obter informações sobre como criar expressões Cron para o parâmetro schedule, consulte Referência: Expressões cron e rate para o Systems Manager.

    Para obter uma explicação de como as várias opções relacionadas à programação de janelas de manutenção se relacionam entre si, consulte Opções de programação da janela de manutenção e do período ativo.

    Para obter mais informações sobre como trabalhar com a opção --schedule, consulte Referência: Expressões cron e rate para o Systems Manager.

    O sistema retorna informações como as seguintes.

    {
       "WindowId":"mw-0c50858d01EXAMPLE"
    }
  2. Para listar esta e outras janelas de manutenção criadas na sua Conta da AWS na Região da AWS atual, execute o seguinte comando:

    aws ssm describe-maintenance-windows

    O sistema retorna informações como as seguintes.

    {
        "WindowIdentities": [
            {
                "Cutoff": 1,
                "Name": "My-First-Maintenance-Window",
                "NextExecutionTime": "2019-02-03T02:00-08:00",
                "Enabled": true,
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Duration": 2
            }
        ]
    }

Etapa 3: Registrar destinos da janela de manutenção (AWS CLI)

Use o procedimento a seguir para registrar um destino em sua janela de manutenção criada na Etapa 2. Ao registrar um destino, você especifica quais nós serão atualizados.

Para registrar destinos de janela de manutenção (AWS CLI)

  1. Execute o comando a seguir. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    Linux & macOS
    aws ssm register-target-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" \ --resource-type "INSTANCE"
    Windows
    aws ssm register-target-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^ --resource-type "INSTANCE"

    O sistema retorna informações como as seguintes, que incluem um ID do destino da janela de manutenção. Copie ou anote o valor do WindowTargetId. Você deverá especificar esse ID na próxima etapa para registrar uma tarefa para essa janela de manutenção.

    {
       "WindowTargetId":"1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d-1a2"
    }

    Comandos alternativos

    Use o comando a seguir para registrar vários nós gerenciados.

    Linux & macOS
    aws ssm register-target-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE" \ --resource-type "INSTANCE"
    Windows
    aws ssm register-target-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE" ^ --resource-type "INSTANCE"

    Use o comando a seguir para registrar nós usando tag.

    Linux & macOS
    aws ssm register-target-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=tag:Environment,Values=Prod" "Key=tag:Role,Values=Web" \ --resource-type "INSTANCE"
    Windows
    aws ssm register-target-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --targets "Key=tag:Environment,Values=Prod" "Key=tag:Role,Values=Web" ^ --resource-type "INSTANCE"
  2. Use o comando a seguir para exibir os destinos para uma janela de manutenção.

    aws ssm describe-maintenance-window-targets --window-id "mw-0c50858d01EXAMPLE"

    O sistema retorna informações como as seguintes.

    {
        "Targets": [
            {
                "ResourceType": "INSTANCE",
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Targets": [
                    {
                        "Values": [
                            "i-02573cafcfEXAMPLE"
                        ],
                        "Key": "InstanceIds"
                    }
                ],
                "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            },
            {
                "ResourceType": "INSTANCE",
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Targets": [
                    {
                        "Values": [
                            "Prod"
                        ],
                        "Key": "tag:Environment"
                    },
                    {
                        "Values": [
                            "Web"
                        ],
                        "Key": "tag:Role"
                    }
                ],
                "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            }
        ]
    }

Etapa 4: Registrar uma tarefa do Run Command para a janela de manutenção atualizar o SSM Agent

Use o procedimento a seguir para registrar uma tarefa do Run Command para a janela de manutenção que você criou na Etapa 2. A tarefa de Run Command atualiza o SSM Agent nos destinos registrados.

Para registrar uma tarefa do Run Command para uma janela de manutenção para atualizar o SSM Agent (AWS CLI)

  1. Execute o comando a seguir para registrar uma tarefa do Run Command para a janela de manutenção usando o valor WindowTargetId na etapa 3. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações. A tarefa atualiza o SSM Agent usando o documento AWS-UpdateSSMAgent.

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --task-arn "AWS-UpdateSSMAgent" \ --name "UpdateSSMAgent" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \ --service-role-arn "arn:aws:iam:account-id:role/MW-Role" \ --task-type "RUN_COMMAND" \ --max-concurrency 1 --max-errors 1 --priority 10
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --task-arn "AWS-UpdateSSMAgent" ^ --name "UpdateSSMAgent" ^ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^ --service-role-arn "arn:aws:iam:account-id:role/MW-Role" ^ --task-type "RUN_COMMAND" ^ --max-concurrency 1 --max-errors 1 --priority 10
    nota

    Se os destinos registrados na etapa anterior forem o Windows Server 2012 R2 ou anterior, você deverá usar o documento AWS-UpdateEC2Config.

    O sistema retorna informações como as seguintes.

    {
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
  2. Execute o comando a seguir para listar todas as tarefas registradas para uma janela de manutenção.

    aws ssm describe-maintenance-window-tasks --window-id "mw-0c50858d01EXAMPLE"

    O sistema retorna informações como as seguintes.

    {
        "Tasks": [
            {
                "ServiceRoleArn": "arn:aws:iam::111122223333:role/MW-Role",
                "MaxErrors": "1",
                "TaskArn": "AWS-UpdateSSMAgent",
                "MaxConcurrency": "1",
                "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
                "TaskParameters": {},
                "Priority": 10,
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Type": "RUN_COMMAND",
                "Targets": [
                    {
                        "Values": [
                            "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
                        ],
                        "Key": "WindowTargetIds"
                    }
                ],
                "Name": "UpdateSSMAgent"
            }
        ]
    }