Gestionar extensiones de VM mediante políticas de extensiones

VM Extension Manager usa políticas de extensiones para gestionar tus extensiones de VM a gran escala. Para obtener más información, consulta Acerca de VM Extension Manager. En este documento se describe cómo ver, actualizar y eliminar políticas de extensiones de VM.

Funciones y permisos de IAM

Para obtener los permisos que necesitas para ver, modificar y eliminar políticas de extensiones de VM, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para ver, modificar y eliminar políticas de extensiones de máquinas virtuales. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Se necesitan los siguientes permisos para ver, modificar y eliminar políticas de extensiones de VM:

  • Para ver las políticas de extensiones, sigue estos pasos: compute.vmExtensionPolicies.list
  • Para ver los detalles de una política de extensiones, sigue estos pasos: compute.vmExtensionPolicies.get
  • Para modificar las políticas de extensiones, sigue estos pasos: compute.vmExtensionPolicies.update
  • Para eliminar políticas de extensiones, sigue estos pasos: compute.vmExtensionPolicies.delete

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en Compute Engine, consulta el artículo sobre roles y permisos de Compute Engine.

Ver políticas de extensiones

Puedes ver una lista de las políticas de extensiones de VM de tu proyecto o los detalles de una política específica mediante la Google Cloud consola o la CLI de Google Cloud.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de extensiones de VM.

    Ir a las políticas de extensiones de MV

    En esta página se muestran todas las políticas de extensiones de VM de tu proyecto.
  2. Para ver los detalles de una política de extensiones específica, haz clic en el nombre de la política.

gcloud

Global

Para ver todas las políticas de extensiones globales de un proyecto, usa el comando gcloud beta compute global-vm-extension-policies list:

gcloud beta compute global-vm-extension-policies list \
  --project=PROJECT_ID \
  --page-size=PAGE_SIZE

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • PAGE_SIZE: número máximo de resultados que se devuelven por página.

Para ver los detalles de una política de extensiones global específica, usa el comando gcloud beta compute global-vm-extension-policies describe:

gcloud beta compute global-vm-extension-policies describe POLICY_NAME \
  --project=PROJECT_ID

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de la política de extensión de VM que quieras describir.
  • PROJECT_ID: tu ID de proyecto Google Cloud .

Por zonas

Para ver todas las políticas de extensiones de un proyecto, usa el comando gcloud beta compute zone-vm-extension-policies list:

gcloud beta compute zone-vm-extension-policies list \
  --project=PROJECT_ID \
  --zone=ZONE \
  --page-size=PAGE_SIZE

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • ZONE: el nombre de la zona en la que quieres enumerar las políticas de extensiones de VM.
  • PAGE_SIZE: número máximo de resultados que se devuelven por página.

Para ver los detalles de una política de extensiones específica, usa el comando gcloud beta compute zone-vm-extension-policies describe:

gcloud beta compute zone-vm-extension-policies describe POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de la política de extensión de VM que quieras describir.
  • PROJECT_ID: tu ID de proyecto Google Cloud .
  • ZONE: la Google Cloud zona en la que se encuentra la política de extensiones de VM.

Modificar extensiones actualizando una política de extensiones de VM

Cuando actualiza una política, VM Extension Manager implementa los cambios en todas las VMs aplicables, normalmente en un minuto. Si modificas las etiquetas de inclusión, es posible que las extensiones se instalen en las nuevas VMs o se desinstalen de las VMs que ya tengas en función de si coinciden con las etiquetas actualizadas.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de extensiones de VM.

    Ir a las políticas de extensiones de MV

  2. Selecciona la política que quieras actualizar.
  3. Haz clic en Editar.
  4. Modifica la Descripción, la Prioridad, las Extensiones o las Instancias de VM de destino.
  5. Haz clic en Guardar.

gcloud

Global

Usa el comando gcloud beta compute global-vm-extension-policies update para modificar una política de extensión de VM global. Cuando actualizas una política mediante gcloud, la solicitud actúa como una sustitución completa. Los campos opcionales que omita volverán a sus valores predeterminados en lugar de conservar los valores de la política modificada.

Para actualizar una política de extensión de VM global, ejecuta el siguiente comando:

  gcloud beta compute global-vm-extension-policies update POLICY_NAME \
      --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
      --description="DESCRIPTION" \
      --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
      --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
      --inclusion-labels=KEY_1=VALUE_1 \
      --priority=PRIORITY_NUMBER \
      --rollout-predefined-plan=ROLLOUT_PLAN \
      --rollout-retry-uuid=RETRY_UUID \
      --rollout-conflict-behavior=ROLLOUT_CONFLICT_BEHAVIOR

Haz los cambios siguientes:

  • POLICY_NAME: nombre de la política de extensión de VM que se va a actualizar.
  • EXTENSION_NAME_1 y EXTENSION_NAME_2: los nombres de las extensiones que se van a actualizar. Debes especificar al menos una extensión.
  • DESCRIPTION: una descripción de la política de extensiones de VM.
  • VERSION_1: la versión de la primera extensión de VM.
  • VERSION_2: la versión de la segunda extensión de VM.
  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: lista de pares clave-valor separados por comas en la que la clave es el nombre de la extensión y el valor es la ruta al archivo de configuración de esa extensión. Esta ruta se encuentra en la VM en la que ejecutas el comando gcloud, no en la VM en la que instalas la extensión.

    También puede proporcionar la configuración como una cadena insertada. Para ello, utilice la marca --config en lugar de --config-from-file. Por ejemplo, EXTENSION_NAME_1="CONFIG_1". Puedes usar --config-from-file o --config, pero no ambos en el mismo comando.

  • KEY_1=VALUE_1: lista de pares clave-valor separados por comas que definen las etiquetas de inclusión de un selector. Las VMs deben tener todas las etiquetas especificadas en un selector para poder segmentarlas. Si especifica --inclusion-labels varias veces, la política se aplicará a las VMs que coincidan con cualquiera de los selectores proporcionados (operador lógico OR). Si omite esta marca, la política se aplicará a todas las VMs de todas las zonas del proyecto.

  • PRIORITY_NUMBER: número de prioridad de la política de extensión de VM.

  • ROLLOUT_PLAN: especifica slow_rollout o fast_rollout. Si necesitas usar un plan de lanzamiento personalizado, usa la marca --rollout-custom-plan en lugar de --rollout-predefined-plan y especifica el nombre del plan. Por ejemplo:

    --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el proyecto en el que se define el plan de lanzamiento.
    • ROLLOUT_PLAN_NAME: el nombre del plan de lanzamiento personalizado que has definido.

    Si no se especifica ninguna marca de plan de lanzamiento, se usa slow_rollout.

  • ROLLOUT_CONFLICT_BEHAVIOR: especifica el comportamiento cuando se detecta un conflicto entre una política zonal y una global. Los valores posibles son:

    • "" (cadena vacía): se usa el valor de la política zonal.
    • overwrite: la política global anula la política zonal.

    Para obtener más información, consulta la marca --rollout-conflict-behavior.

  • RETRY_UUID: un UUID que identifica un intento de reintento de una implementación de actualización de una política. Te permite volver a intentar una actualización sin cambios. Se produce un error si defines esta marca y se modifica la política. Para obtener más información, consulta Volver a intentar un lanzamiento.

Por zonas

Usa el comando gcloud beta compute zone-vm-extension-policies update para modificar una política de extensión de VM. Cuando actualizas una política con gcloud, la solicitud actúa como sustitución completa. Los campos opcionales que omitas volverán a sus valores predeterminados en lugar de conservar los valores de la política modificada.

Para actualizar una política de extensiones de VM, ejecuta el siguiente comando:

  gcloud beta compute zone-vm-extension-policies update POLICY_NAME \
      --zone=ZONE \
      --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
      --description="DESCRIPTION" \
      --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
      --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
      --inclusion-labels=KEY_1=VALUE_1 \
      --priority=PRIORITY_NUMBER

Haz los cambios siguientes:

  • POLICY_NAME: nombre de la política de extensión de VM que se va a actualizar.
  • ZONE: la Google Cloud zona en la que se aplica la política.
  • EXTENSION_NAME_1 y EXTENSION_NAME_2: los nombres de las extensiones que se van a actualizar. Debes especificar al menos una extensión.
  • DESCRIPTION: descripción opcional de la política de extensión de VM.
  • VERSION_1: la versión de la primera extensión de VM.
  • VERSION_2: la versión de la segunda extensión de VM.
  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: lista de pares clave-valor separados por comas en la que la clave es el nombre de la extensión y el valor es la ruta al archivo de configuración de esa extensión. Esta ruta se encuentra en la VM en la que ejecutas el comando gcloud, no en la VM en la que instalas la extensión.

    También puede proporcionar la configuración como una cadena insertada. Para ello, utilice la marca --config en lugar de --config-from-file. Por ejemplo, EXTENSION_NAME_1="CONFIG_1". Puedes usar --config-from-file o --config, pero no ambos en el mismo comando.

  • KEY_1=VALUE_1: lista de pares clave-valor separados por comas que definen las etiquetas de inclusión de un selector. Las VMs deben tener todas las etiquetas especificadas en un selector para poder segmentarlas. Si especifica --inclusion-labels varias veces, la política se aplicará a las VMs que coincidan con cualquiera de los selectores proporcionados (operador lógico OR). Si omite esta marca, la política se aplicará a todas las VMs de la zona especificada.

  • PRIORITY_NUMBER: número de prioridad de la política de extensión de VM.

Desinstalar extensiones eliminando una política de extensión de VM

Cuando eliminas una política, VM Extension Manager desinstala las extensiones de las VMs gestionadas por esa política. Sin embargo, si se aplica otra política activa de menor prioridad a una máquina virtual y declara la misma extensión, la extensión permanecerá instalada en esa máquina virtual en función de la política de menor prioridad.

El administrador de extensiones de VM elimina las extensiones de todas las VMs accesibles en un minuto después de que se elimine la política. Si no se puede acceder a una VM porque se ha eliminado el agente invitado o se ha eliminado la VM, el administrador de extensiones de VM omite la eliminación de la extensión. Si una VM de este tipo vuelve a estar disponible, el gestor de extensiones de VM elimina las extensiones en ese momento.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de extensiones de VM.

    Ir a las políticas de extensiones de MV

  2. Selecciona la política que quieras eliminar.
  3. Haz clic en Eliminar.
  4. En el cuadro de diálogo de confirmación, haz clic en Eliminar.

gcloud

Global

Usa el comando gcloud beta compute global-vm-extension-policies delete para eliminar una política de extensión de VM global.

gcloud beta compute global-vm-extension-policies delete POLICY_NAME \
  --project=PROJECT_ID \
  --rollout-predefined-plan=ROLLOUT_PLAN \
  --rollout-retry-uuid=RETRY_UUID

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de la política de extensión de VM que quieres eliminar.
  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • ROLLOUT_PLAN: especifica slow_rollout o fast_rollout. Si necesitas usar un plan de lanzamiento personalizado, usa la marca --rollout-custom-plan en lugar de --rollout-predefined-plan y especifica el nombre del plan. Por ejemplo:

    --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

    Haz los cambios siguientes:

    • PROJECT_NUMBER: el proyecto en el que se define el plan de lanzamiento.
    • ROLLOUT_PLAN_NAME: el nombre del plan de lanzamiento personalizado que has definido.

    Si no se especifica ninguna marca de plan de lanzamiento, se usa slow_rollout.

  • RETRY_UUID: UUID para volver a intentar eliminar una política de extensiones. Defina este campo solo cuando vuelva a intentar eliminar una política que ya exista y que esté en el estado DELETING. Si se asigna un valor a este campo cuando la política no está en el estado DELETING, se produce un error. Para obtener más información, consulta Volver a intentar un lanzamiento.

Por zonas

Usa el comando gcloud beta compute zone-vm-extension-policies delete para eliminar una política de extensión de VM.

gcloud beta compute zone-vm-extension-policies delete POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de la política de extensión de VM que quieres eliminar.
  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • ZONE: la Google Cloud zona en la que se encuentra la política.

Solucionar problemas de extensiones de máquinas virtuales

En esta sección se describe cómo solucionar problemas con las extensiones de VM.

Comprobar que una extensión está instalada

Para verificar que una extensión está instalada, comprueba lo siguiente en la máquina virtual:

  • Conéctate a la VM y comprueba si hay procesos en ejecución.

    En la siguiente tabla se enumeran los nombres de los procesos de cada extensión:

    Nombre de la extensión Nombre del proceso de la extensión
    google-cloud-sap-extension google_cloud_sap_agent
    google-cloud-workload-extension google_cloud_workload_agent
    ops-agent ops-agent

    Linux

    ps aux | grep 'EXTENSION_PROCESS_NAME'
    Sustituye EXTENSION_PROCESS_NAME por el nombre del proceso de la extensión. Por ejemplo, para comprobar el proceso del agente de Ops, ejecuta el siguiente comando:
    ps aux | grep 'ops-agent'

    Windows

    tasklist | findstr "EXTENSION_PROCESS_NAME"
    Sustituye EXTENSION_PROCESS_NAME por el nombre del proceso de la extensión. Por ejemplo, para comprobar el proceso del agente de Ops, ejecuta el siguiente comando:
    tasklist | findstr "ops-agent"

    La salida del comando ps en una máquina virtual Linux para el agente de operaciones puede mostrar una entrada similar a la siguiente:

    ....
    /var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3
    ....
  • Habilita y revisa los registros del agente invitado. Los registros del agente invitado muestran cuándo se instala y se inicia una extensión.

    A continuación, se muestra un ejemplo del resultado que puede ver en los registros del agente invitado cuando se instala una extensión del Agente de operaciones:

    my-instance google_guest_agent [14972]: Installing plugin "ops-agent", revision "2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (client.go:181) Sent message [[type.googleapis.com/agent_controlplane.PluginEventMessage: (revision_id:"2dfa648c1892da87)]]
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "DownloadPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:316) Successfully downloaded "https://storage.googleapis.com/acp-gcs-bucket-us-centrall-a/ops-agent
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "UnpackPluginArchiveStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:361) Successfully unpacked "/var/lib/google-guest-agent/ops-agent.tar.gz" to "/google-guest-agent/ops-agent_2dfa648c1892da87
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "LaunchPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (run_linux.go:32) Attempting process start: (OutputType:0 Name:/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87)
    my-instance google_guest_agent [14972]: (pluginlauncher.go:132) Launched a plugin process from "/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:136) Dialing in on plugin "ops-agent 2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:51) Executing start request on plugin "ops-agent_2dfa648c1892da87"

Solucionar problemas de instalación

Si una extensión no se instala en una máquina virtual después de crear una política, siga estos pasos para solucionar el problema:

  1. Espere a que se apliquen las políticas. Una política puede tardar hasta una hora en aplicarse, incluidos los reintentos.
  2. Comprueba que las etiquetas de inclusión especificadas en la política coincidan con las etiquetas de la VM.
  3. Para identificar posibles errores de instalación, habilita el registro de depuración del agente invitado.
  4. Una vez que haya solucionado el problema subyacente, vuelva a intentar la instalación con uno de los siguientes métodos:

    • Vuelva a crear la política: elimine la política y, a continuación, cree una nueva.
    • Usa una política temporal de alta prioridad: si quieres evitar tener que volver a crear una política que afecte a muchas VMs, usa una política temporal de mayor prioridad para volver a intentar la instalación en VMs específicas:

      1. Añade una etiqueta nueva a las VMs en las que no se haya podido completar la instalación. Por ejemplo, añade una etiqueta status=failed.
      2. Crea una política con una prioridad más alta que se dirija a la nueva etiqueta. Por ejemplo, si la política original que ha fallado tenía la prioridad predeterminada 1000, crea una política con una prioridad más alta, como 500.
        gcloud beta compute zone-vm-extension-policies create temp-policy  
        --project=test-project
        --zone=us-central1-f
        --extensions=ops-agent
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml"
        --priority=500
        --inclusion-labels=status=failed
      3. Una vez que la extensión se haya instalado correctamente, elimina la política temporal y quita la etiqueta de las VMs. La extensión sigue instalada porque la política original sigue activa.

Ver los registros de depuración del agente invitado

Para habilitar el registro de depuración, añade la configuración del nivel de registro y del nivel de detalle a la sección Core del archivo de configuración del agente invitado de la siguiente manera:

Linux

  1. Abre el archivo de configuración del agente invitado, que se encuentra en /etc/default/instance_configs.cfg.
  2. Añade las siguientes líneas al archivo. Si la sección [Core] ya existe, añádele los ajustes log_level y log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Reinicia el gestor de agentes invitados ejecutando el siguiente comando:

     sudo systemctl restart google-guest-agent-manager
    
  4. Para ver los registros de la actividad del agente invitado durante la instalación de la extensión, ejecuta el siguiente comando:

    journalctl -u google-guest-agent-manager
    

Windows

  1. Abre el archivo de configuración del agente invitado, que se encuentra en C:\Program Files\Google\Compute Engine\instance_configs.cfg.
  2. Añade las siguientes líneas al archivo. Si la sección [Core] ya existe, añádele los ajustes log_level y log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Reinicia el gestor de agentes invitados ejecutando el siguiente comando como administrador de Windows:

     net stop GCEAgentManager
     net start GCEAgentManager
    
  4. Para ver los registros de la actividad del agente invitado durante la instalación de la extensión, ejecuta el siguiente comando en PowerShell:

    Get-Eventlog -Source google_guest_agent_manager -LogName Application
    

Después de habilitar los registros de depuración, comprueba si se han producido los siguientes errores habituales:

  • No hay suficiente espacio en el disco: si los registros indican que no hay suficiente espacio en el disco, libera espacio en el disco o cambia su tamaño para añadir más espacio.
  • Uso excesivo de recursos: si los registros indican que el agente invitado ha detenido la extensión debido a un uso excesivo de memoria o CPU, cambia el tipo de máquina de la VM a uno con más recursos.

Siguientes pasos