Tutorial: crear un período de mantenimiento para actualizar SSM Agent (AWS CLI) - AWS Systems Manager

Tutorial: crear un período de mantenimiento para actualizar SSM Agent (AWS CLI)

En la siguiente explicación se muestra cómo utilizar la AWS Command Line Interface (AWS CLI) para crear un periodo de mantenimiento de AWS Systems Manager. También se describe cómo registrar los nodos administrados como destinos y cómo registrar una tarea de Systems Manager Run Command para actualizar SSM Agent.

Antes de empezar

Antes de completar el siguiente procedimiento, debe tener permisos de administrador en los nodos que desea configurar o se le deben haber concedido los permisos adecuados en AWS Identity and Access Management (IAM). Además, verifique que haya al menos un nodo gestionado para Linux en ejecución o que Windows Server esté configurado para Systems Manager en un entorno híbrido y multinube. Para obtener más información, consulte Configuración de AWS Systems Manager.

Paso 1: introducción

Para ejecutar comandos utilizando la AWS CLI
  1. Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).

    Para obtener información, consulte Instalación o actualización de la última versión de la AWS CLI.

  2. Compruebe que un nodo está listo para ser registrado como destino de un periodo de mantenimiento.

    Ejecute el siguiente comando para ver qué nodos están en línea.

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

    Ejecute el siguiente comando para ver los detalles sobre un nodo en particular.

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

Paso 2: crear el período de mantenimiento

Utilice el siguiente procedimiento para crear un periodo de mantenimiento y especificar sus opciones básicas, como, por ejemplo, programación y duración.

Crear un período de mantenimiento (AWS CLI)
  1. Abra la AWS CLI y ejecute los siguientes comandos para crear un periodo de mantenimiento que se ejecute todos los domingos a las 2.00 h, en la zona horaria del Pacífico de EE. UU., con un corte de una 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 obtener más información sobre cómo crear expresiones cron para el parámetro schedule, consulte Referencia: expresiones cron y rate para Systems Manager.

    Para ver una explicación de cómo se relacionan entre sí las distintas opciones relacionadas con la programación de los periodos de mantenimiento, consulte Programación de la ventana de mantenimiento y opciones de periodo activo.

    Para obtener más información acerca del uso de la opción --schedule, consulte Referencia: expresiones cron y rate para Systems Manager.

    El sistema devuelve información similar a la siguiente.

    {
       "WindowId":"mw-0c50858d01EXAMPLE"
    }
  2. Para ver una lista con este y cualquier otro periodo de mantenimiento creado en su Cuenta de AWS de su Región de AWS actual, ejecute el siguiente comando.

    aws ssm describe-maintenance-windows

    El sistema devuelve información similar a la siguiente.

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

Paso 3: registrar destinos de periodo de mantenimiento (AWS CLI)

Utilice el siguiente procedimiento para registrar un destino con el periodo de mantenimiento creado en el paso 2. Al registrar un destino, debe especificar qué nodos se van a actualizar.

Para registrar destinos de periodo de mantenimiento (AWS CLI)
  1. Ejecute el siguiente comando de la . Reemplace cada example resource placeholder con su propia información.

    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"

    El sistema devuelve información similar a la siguiente, que incluye un ID de destino de periodo de mantenimiento. Copie o anote el valor de WindowTargetId. Debe especificar este ID en el siguiente paso para registrar una tarea para este periodo de mantenimiento.

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

    Utilice el siguiente comando para registrar varios nodos administrados.

    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"

    Utilice el siguiente comando para registrar nodos utilizando etiquetas.

    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. Ejecute el siguiente comando para mostrar los destinos de un periodo de mantenimiento.

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

    El sistema devuelve información similar a la siguiente.

    {
        "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"
            }
        ]
    }

Paso 4: registrar una tarea de Run Command para el periodo de mantenimiento para actualizar SSM Agent

Utilice el siguiente procedimiento para registrar una tarea de Run Command para el periodo de mantenimiento creado en el paso 2. La tarea de Run Command actualiza SSM Agent en los destinos registrados.

Para registrar una tarea de Run Command para un periodo de mantenimiento para actualizar SSM Agent (AWS CLI)
  1. Ejecute el siguiente comando para registrar una tarea de Run Command para el periodo de mantenimiento mediante el valor de WindowTargetId en el paso 3. Reemplace cada example resource placeholder con su propia información. La tarea actualiza SSM Agent utilizando el 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

    Si los destinos registrados en el paso anterior son Windows Server 2012 R2 o de versiones anteriores, debe utilizar el documento AWS-UpdateEC2Config.

    El sistema devuelve información similar a la siguiente.

    {
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
  2. Ejecute el siguiente comando para enumerar todas las tareas registradas para un período de mantenimiento.

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

    El sistema devuelve información similar a la siguiente.

    {
        "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"
            }
        ]
    }