Actualizar propiedades de instancias


Puedes usar una sola solicitud desde la CLI de Google Cloud o la API de Compute Engine para actualizar varias propiedades de la instancia y, opcionalmente, reiniciar la instancia si es necesario. El método de actualización gestiona la lógica para validar las propiedades de la instancia actualizada y asegurarse de que los recursos necesarios estén disponibles para completar la actualización correctamente. Si la solicitud incluye propiedades no válidas o si los recursos solicitados no están disponibles, la solicitud devuelve un error y no se realiza ningún cambio en tu instancia. De esta forma, se protege la instancia frente a actualizaciones parciales y se evita que se detenga y no pueda acceder a los recursos para volver a iniciarse.

Para actualizar las interfaces de red (networkInterfaces) de una instancia, consulta Actualizar las interfaces de red de una instancia.

Para añadir o quitar interfaces de red dinámicas de una instancia (vista previa), sigue estos procedimientos en lugar de actualizar las propiedades de la instancia:

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Restricciones

  • Las solicitudes de actualización de instancias a través de gcloud CLI o de la API Compute Engine no admiten la semántica PATCH. El recurso de instancia de 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 tu solicitud de actualización se consideran eliminadas de la instancia.
  • Solo puedes actualizar una lista específica de propiedades.
  • No se admite el cambio de instancias a y desde el aislamiento.
  • Puedes cambiar una instancia de una reserva a otra, pero no puedes asociar ni desasociar una instancia a una reserva mediante el proceso de actualización.
  • Si la instancia tiene discos SSD locales conectados, no puedes actualizar las propiedades que requieran que la instancia se reinicie mientras está en ejecución. Puedes eliminar la instancia y volver a crearla, o bien detenerla, actualizar las propiedades y, a continuación, reiniciarla.
  • Puedes actualizar la propiedad networkInterfaces de una instancia, pero no puedes añadir ni quitar NICs virtuales (vNICs) de una instancia.
  • Si una instancia usa recursos que solo están disponibles en la versión beta de la API de Compute Engine, debes usar la versión correcta del método instances.update para actualizar esas propiedades. Por ejemplo, si creas una instancia con la API beta de Compute Engine 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 para actualizar esos recursos. La versión 1 del método instances.update no reconoce los recursos beta que usa tu instancia, por lo que elimina esos recursos beta de la configuración de la instancia durante el proceso de actualización. Este comportamiento también se aplica a los recursos de la API alfa.

Permisos

Debes tener el permiso compute.instances.update para actualizar instancias. Este permiso se incluye en varios roles de gestión de identidades y accesos (IAM). También debes tener permiso para usar los recursos que quieras modificar en la instancia. Por ejemplo, para añadir un disco a una instancia, debes tener los siguientes permisos:

  • El permiso compute.instances.update de la instancia que quieras actualizar.
  • compute.disks.use permiso para un disco que ya tengas o compute.disks.create en un proyecto en el que quieras crear un disco.

Prácticas recomendadas

Para que la interfaz de actualización de instancias funcione de la forma más eficaz posible, siga estas prácticas recomendadas:

  • Si es posible, usa siempre la misma versión de la API de Compute Engine para crear, definir y actualizar instancias. De esta forma, puedes actualizar y modificar los recursos de cualquier instancia si solo están disponibles en una versión de la API.
  • Aunque puedes usar el método instances.update para actualizar instancias de un grupo de instancias gestionado (MIG), en la mayoría de los casos es mejor cambiar la plantilla de instancia del grupo y desplegar esa actualización en el MIG.
  • Si actualizas un recurso que usa la instancia, usa el comando para actualizar ese recurso de la instancia en lugar de actualizar las propiedades de la instancia. Por ejemplo:
    • Puedes modificar los discos con el método disks.update.
    • Para cambiar la red que usa la instancia, puedes usar el método instances.updateNetworkInterface, que no requiere detener la instancia.

Propiedades que puedes actualizar

Solo puede cambiar un conjunto específico de propiedades de instancia mediante el método update. Para actualizar algunas propiedades, es necesario reiniciar la instancia. Para evitar que tus instancias se reinicien por error, tu solicitud debe definir qué acción se puede llevar a cabo en ellas. Tu solicitud puede especificar una de las siguientes acciones:

  • NO_EFFECT: la solicitud de actualización comprueba si 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.
  • REFRESH: la solicitud de actualización solo se ejecuta si las propiedades de la instancia modificada no requieren que se reinicie la instancia. La solicitud devuelve un error INFEASIBLE si es válida, pero es necesario reiniciar.
  • RESTART: si la actualización requiere que se reinicie la instancia, el sistema la reiniciará.

Para actualizar las siguientes propiedades, es necesario reiniciar (RESTART):

  • disks: discos de arranque, incluidos todos los discos (disks.deviceName)
  • displayDevice
  • enableNestedVirtualization
  • guestAccelerators
  • machineType
  • minCpuPlatform
  • networkInterfaces
  • networkPerformanceConfig
  • performanceMonitoringUnit
  • reservationAffinity: Solo puedes actualizar cómo consume la instancia las reservas (reservationAffinity.consumeReservationType) de la siguiente manera:
    • Desde consumir cualquier reserva coincidente (ANY_RESERVATION) hasta no consumir reservas (NO_RESERVATION)
    • De no consumir reservas (NO_RESERVATION) a consumir cualquier reserva coincidente (ANY_RESERVATION)
  • resourcePolicies
  • scheduling
  • serviceAccounts
  • shieldedInstanceConfig
  • threadsPerCore
  • visibleCoreCount

Las siguientes propiedades solo requieren una actualización (REFRESH) para actualizarse:

  • canIpForward
  • deletionProtection
  • description
  • disks: propiedades de disco no de arranque, excepto deviceName
  • labels
  • metadata
  • nodeAffinities
  • tags

Actualizar propiedades de instancias

Para actualizar tus instancias, sigue estos pasos:

  1. Exporta las propiedades de configuración de la instancia.
  2. Modifica las propiedades de la configuración de la instancia.
  3. Ejecuta una solicitud de prueba especificando NO_EFFECT como la acción más disruptiva. La respuesta indica que hay campos no válidos en la configuración de la instancia y la acción necesaria 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 disruptiva que se pueda llevar a cabo en la actualización de la instancia.

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

  • La propiedad fingerprint de la instancia en tu solicitud debe coincidir con la fingerprint de la instancia que estás actualizando. De esta forma, se evita que las solicitudes de actualización simultáneas de la misma instancia se sobrescriban entre sí.
  • Las propiedades de tu solicitud de actualización deben ser válidas.
  • Los recursos que solicites deben estar disponibles.
  • Si las propiedades de tu solicitud requieren que se reinicie la instancia, debes especificar RESTART como 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 hará ningún cambio en la instancia ni en su configuración.

Puedes iniciar actualizaciones con la CLI de gcloud o con la API de Compute Engine.

gcloud

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

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

    Haz los cambios siguientes:

    • INSTANCE_NAME: el nombre de la instancia que quieras exportar.
    • PROJECT_ID: el ID de proyecto de esta solicitud.
    • ZONE: la zona de esta instancia.
    • FILE_PATH: la ruta de salida en la que quieres 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 varias propiedades del archivo de configuración de la instancia exportada. Para saber qué propiedades puede actualizar, consulte la lista de propiedades actualizables de este documento. 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
    ...
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de proyecto de esta solicitud.
    • ZONE: la zona de esta instancia.
    • MACHINE_TYPE: 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 mal configuradas e indica si es necesario realizar una acción 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
    

    Haz los cambios siguientes:

    • INSTANCE_NAME: el nombre de la instancia que quieras exportar.
    • PROJECT_ID: el ID de proyecto de esta solicitud.
    • ZONE: la zona de esta instancia.
    • FILE_PATH: la ruta al archivo de configuración de la instancia modificada en tu estación de trabajo local.
  4. Usa el comando instances update-from-file para actualizar la instancia de destino. Si vas a actualizar una propiedad que requiere que se reinicie la instancia, incluye la marca --most-disruptive-allowed-action=RESTART. Si las propiedades no requieren que se reinicie, especifica la marca --most-disruptive-allowed-action=REFRESH. Para saber qué propiedades requieren un reinicio, consulta la lista de propiedades actualizables de este documento.

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

    Haz los cambios siguientes:

    • INSTANCE_NAME: el nombre de la instancia que quieras exportar.
    • PROJECT_ID: el ID de proyecto de esta solicitud.
    • ZONE: la zona de esta instancia.
    • FILE_PATH: la ruta al archivo de configuración de la instancia modificada en tu estación de trabajo local.
    • ALLOWED_ACTION: define el nivel de interrupción que puede provocar la actualización. Especifica RESTART para permitir que se reinicie por completo la instancia. Especifica REFRESH para actualizar la instancia solo si las propiedades modificadas no requieren que se reinicie.

Si la solicitud de actualización es válida y los recursos necesarios están disponibles, se inicia el proceso de actualización de la instancia. Para monitorizar el estado de esta operación, consulta los registros de auditoría. Si la actualización requiere un reinicio y tu comando permite un RESTART, la instancia se reinicia para aplicar los cambios.

REST

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

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

    Haz los cambios siguientes:

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

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

  2. En la respuesta, modifica las propiedades del recurso de instancia. Para saber qué propiedades se pueden actualizar, consulta la lista de propiedades actualizables de este documento. 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",
      ...
    }
    

    Haz los cambios siguientes:

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

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

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de proyecto de esta solicitud.
    • ZONE: la zona de esta instancia.
    • INSTANCE_NAME: el nombre de la instancia que quieras exportar.
  4. Usa el método instances.update de la API Compute Engine para actualizar la instancia de destino. Si vas a actualizar una propiedad que requiere que se reinicie una instancia, incluye el parámetro de consulta mostDisruptiveAllowedAction=RESTART para indicar que la instancia se puede reiniciar durante la actualización. Si las propiedades no requieren que se reinicie el dispositivo, especifica el parámetro de consulta mostDisruptiveAllowedAction=REFRESH. Para saber qué propiedades requieren un reinicio, consulta la lista de propiedades actualizables de este documento. Incluye el cuerpo completo del recurso de instancia que has modificado. 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?mostDisruptiveAllowedAction=ALLOWED_ACTION
    
    {
      ...
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID de proyecto de esta solicitud.
    • ZONE: la zona de esta instancia.
    • INSTANCE_NAME: el nombre de la instancia que quieras exportar.
    • ALLOWED_ACTION: define el nivel de interrupción que puede provocar la actualización. Especifica RESTART para permitir que la instancia se reinicie por completo. Especifica REFRESH para actualizar la instancia solo si las propiedades modificadas no requieren que se reinicie.

Si la solicitud de actualización es válida y los recursos necesarios están disponibles, se inicia el proceso de actualización de la instancia. Para monitorizar el estado de esta operación, consulta los registros de auditoría. Si la actualización requiere un reinicio y tu comando permite un RESTART, la instancia se reinicia para aplicar los cambios.

Siguientes pasos