Actualiza las propiedades de las instancias

Puedes usar una sola solicitud desde la herramienta de línea de comandos de gcloud o la API de Compute Engine para actualizar varias propiedades de instancia y, de manera opcional, puedes reiniciar la instancia si es necesario. El método de actualización controla la lógica a fin de validar las propiedades de instancia actualizadas y garantizar que los recursos necesarios estén disponibles para completar la actualización de forma correcta. Si la solicitud incluye propiedades que no son válidas o si los recursos solicitados no están disponibles, esta muestra un error y no realiza cambios en la instancia. Esto protege a la instancia de las actualizaciones parciales y evita que se detenga y que no pueda acceder a los recursos para volver a iniciarse.

Antes de comenzar

Restricciones

  • Las solicitudes de actualización de instancias a través de la herramienta de gcloud o la API de Compute Engine no son compatibles con la semántica de PATCH. El recurso de instancia en la solicitud de actualización debe incluir todas las propiedades de la instancia. Las propiedades que faltan en la configuración de la instancia en la solicitud de actualización se borrarán de la instancia.
  • Solo puedes actualizar una lista específica de propiedades.
  • No se admite el cambio de instancias a un usuario único, o desde él.
  • Puedes cambiar una instancia de una reserva a otra, pero no puedes conectarla o desconectarla de una reserva mediante el proceso de actualización.
  • Si la instancia tiene un SSD local conectado, no podrás actualizar las propiedades que requieren que se reinicie la instancia. Debes detener la instancia, actualizar sus propiedades y reiniciarla de forma manual.
  • Si una instancia usa recursos que solo están disponibles en la API de Compute Engine Beta, debes usar la versión correcta del método instances.update para actualizar esas propiedades. Por ejemplo, si creas una instancia mediante la API de Compute Engine Beta y la configuras con un recurso que solo reconoce la API Beta, también debes usar la versión Beta del método instances.update a fin de actualizar esos recursos. La versión v1 del método instances.update no reconoce los recursos Beta que usa la instancia, por lo que los borra de la configuración de la instancia durante el proceso de actualización. Esto también se aplica a los recursos en la API Alfa.

Permisos

Debes tener el permiso compute.instances.update para actualizar las instancias. Este permiso se incluye en varias funciones de administración de identidades y accesos (IAM) existentes. También debes tener permiso para usar los recursos que deseas modificar en la instancia. Por ejemplo, para agregar un disco a una instancia, debes tener los siguientes permisos:

  • El permiso compute.instances.update en la instancia que deseas actualizar
  • El permiso compute.disks.use para un disco existente, o compute.disks.create en un proyecto en el que quieras crear un disco nuevo

Prácticas recomendadas

Para asegurarte de que la interfaz de actualización de la instancia funciona de la manera más eficaz, usa las siguientes prácticas recomendadas:

  • Si es posible, usa de manera coherente la misma versión de la API de Compute Engine para crear, configurar y actualizar instancias. Esto garantiza que puedas actualizar y modificar cualquier recurso de instancia si están disponibles solo en una versión de la API.
  • Aunque puedes usar el método instances.update para actualizar instancias en un grupo de instancias administrado (MIG), en la mayoría de las situaciones, es mejor cambiar la plantilla de instancias del grupo y lanzar esa actualización al MIG.

Propiedades que puedes actualizar

Solo puedes cambiar un conjunto específico de propiedades de la instancia mediante el método de actualización. Las actualizaciones de algunas propiedades requieren que la instancia se reinicie. A fin de evitar reinicios accidentales en las instancias, la solicitud debe definir qué acción se puede realizar en tus instancias. La solicitud puede especificar una de las siguientes acciones:

  • NO_EFFECT: La solicitud de actualización verifica si la solicitud es válida y si los recursos están disponibles, pero no ejecuta la actualización. Usa esta acción para probar comandos sin iniciar ninguna actualización real.
  • REFRESH: La solicitud de actualización se ejecuta solo si las propiedades de la instancia modificadas no requieren que la instancia se reinicie. La solicitud muestra un error INFEASIBLE cuando la solicitud es válida, pero es necesario reiniciarla.
  • RESTART: Si la actualización requiere que la instancia se reinicie, el sistema lo hará.

Propiedades que requieren la actualización de RESTART:

  • reservation_affinity
  • disk: Discos de arranque
  • display_device
  • guest_accelerator
  • machine_type
  • min_cpu_platform
  • scheduling
  • service_account
  • shielded_instance_config

Propiedades que solo requieren la actualización de REFRESH:

  • deletion_protection
  • description
  • disk: Discos que no son de arranque
  • labels
  • metadata
  • tags

Actualiza las propiedades de las instancias

Sigue estos pasos para actualizar las instancias:

  1. Exporta las propiedades existentes de configuración de instancias.
  2. Modifica las propiedades de configuración de la instancia.
  3. Especifica NO_EFFECT como la acción más perjudicial para ejecutar una solicitud de prueba. La respuesta indica campos que no son válidos en la configuración de la instancia y también indica la acción requerida para aplicar los cambios.
  4. Si la configuración es aceptable, solicita una actualización de la instancia y especifica la acción más perjudicial aceptable para esta actualización.

El sistema inicia el proceso de actualización solo si la solicitud cumple con los siguientes requisitos:

  • La propiedad fingerprint de la instancia en la solicitud debe coincidir con la fingerprint de la instancia que estás actualizando. Esto evita que las solicitudes de actualización simultáneas en la misma instancia se reemplacen entre sí.
  • Las propiedades de la solicitud de actualización deben ser válidas.
  • Los recursos que solicitaste deben estar disponibles.
  • Si las propiedades de la solicitud requieren que la instancia se reinicie, la solicitud debe especificar RESTART como una acción permitida.

Si se cumplen los requisitos, el sistema inicia el proceso de actualización de la instancia. De lo contrario, el sistema no modificará la instancia existente ni su configuración.

Puedes iniciar actualizaciones mediante la herramienta de gcloud o la API de Compute Engine.

gcloud

  1. Usa el comando instances export para exportar las propiedades de la instancia existentes:

    gcloud compute instances export `INSTANCE_NAME \
        --project `PROJECT_ID \
        --zone `ZONE \
        --destination=FILE_PATH
    

    Reemplaza lo siguiente:

    • INSTANCE_NAME: Es el nombre de la instancia que deseas exportar.
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
    • FILE_PATH: Es la ruta de acceso de salida en la que deseas guardar el archivo de configuración de la instancia en tu estación de trabajo local.
  2. Usa un editor de texto para modificar una o más propiedades del archivo de configuración de la instancia exportado. Para saber cuáles son las propiedades que puedes actualizar, consulta la lista de propiedades que se pueden actualizar. Por ejemplo, para cambiar el tipo de máquina de la instancia, cambia la propiedad machineType:

    ⋮
    machineType: https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
    • MACHINE_TYPE: Es el tipo de máquina de la instancia. Por ejemplo, n1-standard-2.
  3. Usa el comando instances update-from-file para ejecutar una actualización de prueba de la instancia de destino. Especifica la marca --most-disruptive-allowed-action=NO_EFFECT. La respuesta identifica las propiedades que está mal configuradas y también indica si se requiere una acción de RESTART o REFRESH para aplicar la actualización.

    gcloud compute instances update-from-file `INSTANCE_NAME \
        --project `PROJECT_ID \
        --zone `ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action NO_EFFECT
    

    Reemplaza lo siguiente:

    • INSTANCE_NAME: Es el nombre de la instancia que deseas exportar.
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
    • FILE_PATH: Es la ruta al archivo de configuración de la instancia modificado en tu estación de trabajo local.
  4. Usa el comando instances update-from-file para actualizar la instancia de destino. Si actualizas una propiedad que requiere que la instancia se reinicie, incluye la marca --most-disruptive-allowed-action=RESTART. Si las propiedades no requieren que se lleve a cabo un reinicio, especifica la marca --most-disruptive-allowed-action=REFRESH. Para saber cuáles son las propiedades que requieren un reinicio, consulta la lista de propiedades que se pueden actualizar.

    gcloud compute instances update-from-file `INSTANCE_NAME \
        --project `PROJECT_ID \
        --zone `ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action `ALLOWED_ACTION
    

    Reemplaza lo siguiente:

    • INSTANCE_NAME: Es el nombre de la instancia que deseas exportar.
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
    • FILE_PATH: Es la ruta al archivo de configuración de la instancia modificado en tu estación de trabajo local.
    • ALLOWED_ACTION: Define qué tan perjudicial puede ser la actualización. Especifica RESTART para permitir que la instancia se reinicie de forma completa. Especifica REFRESH para actualizar la instancia solo si las propiedades modificadas no requieren que la instancia se reinicie.

Si la solicitud de actualización es válida y los recursos requeridos están disponibles, comienza el proceso de actualización de la instancia. Puedes supervisar el estado de esta operación mediante la visualización de los registros de auditoría. Si la actualización requiere un reinicio y el comando permite un RESTART, la instancia se reinicia para aplicar los cambios.

API

  1. Usa el método instances.get en la API de Compute Engine para exportar las propiedades de instancia existentes:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
    • INSTANCE_NAME: Es el nombre de la instancia que deseas exportar.

    Esta solicitud muestra una definición de recurso de instancia.

  2. En la respuesta, modifica las propiedades del recurso de la instancia. Para saber cuáles son las propiedades que se pueden actualizar, consulta la lista de propiedades que se pueden actualizar. Por ejemplo, para cambiar el tipo de máquina de la instancia, cambia la propiedad machineType. Puedes cambiar varias propiedades.

    {
    ⋮
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
    ⋮
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
    • MACHINE_TYPE: Es el tipo de máquina de la instancia. Por ejemplo, n1-standard-2.
  3. Usa el método instances.update en la API de Compute Engine y especifica most_disruptive_allowed_action=NO_EFFECT para ejecutar una actualización de prueba de la instancia de destino. La respuesta identifica las propiedades que están mal configuradas y también indica si se requiere una acción de RESTART o REFRESH para aplicar la actualización.

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/update?most_disruptive_allowed_action=NO_EFFECT
    
    {
    ⋮
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
    ⋮
    }
    

    Reemplaza lo siguiente:

    • INSTANCE_NAME: Es el nombre de la instancia que deseas exportar.
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
  4. Usa el método instances.update en la API de Compute Engine para actualizar la instancia de destino. Si actualizas una propiedad que requiere que la instancia se reinicie, incluye el parámetro de búsqueda ?most_disruptive_allowed_action=RESTART para indicar que la instancia se puede reiniciar durante la actualización. Si las propiedades no requieren un reinicio, especifica el parámetro de búsqueda ?most_disruptive_allowed_action=REFRESH. Para saber cuáles son las propiedades que requieren un reinicio, consulta la lista de propiedades que se pueden actualizar. Incluye el cuerpo completo para el recurso de instancia que modificaste. En el siguiente ejemplo, el cuerpo cambia el tipo de máquina a n1-standard-2:

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/update?most_disruptive_allowed_action=ALLOWED_ACTION
    
    {
    ⋮
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
    ⋮
    }
    

    Reemplaza lo siguiente:

    • INSTANCE_NAME: Es el nombre de la instancia que deseas exportar.
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: Es la zona de esta instancia.
    • ALLOWED_ACTION: Define qué tan perjudicial puede ser la actualización. Especifica RESTART para permitir que la instancia se reinicie de forma completa. Especifica REFRESH para actualizar la instancia solo si las propiedades modificadas no requieren que la instancia se reinicie.

Si la solicitud de actualización es válida y los recursos requeridos están disponibles, comienza el proceso de actualización de la instancia. Puedes supervisar el estado de esta operación mediante la visualización de los registros de auditoría. Si la actualización requiere un reinicio y el comando permite un RESTART, la instancia se reinicia para aplicar los cambios.

Próximos pasos