En este documento, se describe cómo solucionar problemas con VM Manager.
Para obtener más información sobre VM Manager, consulta VM Manager.
Antes de empezar
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar
código o muestras desde un entorno de desarrollo local, puedes autenticarte en
Compute Engine seleccionando una de las siguientes opciones:
Selecciona la pestaña según cómo planeas usar las muestras de esta página:
Console
Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud , no necesitas configurar la autenticación.
gcloud
-
Instala Google Cloud CLI. Después de instalarla, inicializa Google Cloud CLI ejecutando el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
- Configura una región y una zona predeterminadas.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .
Descripción general
Para solucionar problemas, primero verifica que VM Manager esté configurado de forma correcta. Si la configuración es correcta y aún tienes problemas, puedes revisar los registros. Cuando revisas los registros, puedes identificar problemas con la VM o en el flujo de trabajo de VM Manager, como errores en comandos o secuencias de comandos, que puedes aislar y resolver.
Puedes recopilar la siguiente información de los registros:
Cualquier mensaje de error o advertencia que registre la VM. Estos registros te ayudan a identificar errores a nivel de la VM o errores de otros servicios que se ejecutan en ella. Para revisar estos registros, consulta Inspecciona Cloud Logging.
La información de depuración detallada que registra el agente de configuración del SO. Estos registros te ayudan a identificar problemas con cualquiera de las operaciones que ejecuta VM Manager. Para inspeccionar los registros de depuración del agente de configuración del SO, consulta Inspecciona los registros de depuración.
Después de identificar los problemas o errores, también puedes revisar la sección Errores comunes para ver las posibles soluciones o consultar la solución alternativa para administrar las implementaciones de parches en una organización.
Inspecciona Cloud Logging
Puedes usar los vínculos rápidos de la consola de Google Cloud para cada función con el objetivo de ver los registros.
Parche del SO
- En la consola de Google Cloud , ve a la pestaña Ejecución de trabajos en la página Parche.
- Haz clic en el nombre del trabajo de aplicación de parche que deseas depurar.
- Ve a la sección Instancias de VM actualizadas.
- Para una VM específica, en Registros, haz clic en Ver.
Políticas del SO
Este procedimiento es compatible con las políticas del SO. Para las políticas de invitado (Beta), usa la opción de registros de depuración en la siguiente sección.
- En la consola de Google Cloud , ve a la pestaña Instancias de VM en la página Políticas del SO.
- Haz clic en el nombre de la VM que deseas depurar.
- Ve a la sección Políticas.
- En Registros, haz clic en Ver.
Organizadores de políticas del SO
- En la consola de Google Cloud , ve a la pestaña Orquestadores de políticas del SO en la página Políticas del SO.
- Haz clic en el nombre del organizador de políticas del SO que deseas depurar.
- Ve a la sección Registros y verifica la entrada de registro.
Inspecciona registros de depuración
Puedes identificar problemas con cualquier función de VM Manager si habilitas la depuración para el agente de configuración del SO y ves el registro de depuración.
Habilita el registro de depuración para el agente de configuración del SO
Para habilitar el registro de depuración, configura los metadatos osconfig-log-level=debug en la instancia de VM o el proyecto.
Para habilitar el registro de depuración en la VM, completa los siguientes pasos:
Console
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en el nombre de la VM para la que deseas configurar el valor de metadatos.
En la página Detalles de la instancia, haz clic en Cambiar para cambiar la configuración.
En Metadatos personalizados, agrega las siguientes entradas de metadatos:
Clave:
osconfig-log-level
Valor:debugHaz clic en Guardar para aplicar los cambios a la VM.
gcloud
Usa el comando instances add-metadata con la marca --metadata=osconfig-log-level=debug:
gcloud compute instances add-metadata VM_NAME \
--metadata=osconfig-log-level=debug
Reemplaza VM_NAME por el nombre de tu VM.
REST
Si quieres obtener instrucciones para configurar los metadatos de la instancia, sigue las instrucciones de la API sobre cómo configurar los metadatos de la instancia.
El siguiente par clave-valor es obligatorio como parte de la propiedad de metadatos:
Clave: osconfig-log-level
Valor: debug
Consulta registros de depuración
Cuando el registro de depuración está habilitado, el agente de configuración del SO escribe entradas de registro en Cloud Logging y la consola del puerto en serie.
Después de habilitar el registro de depuración en la VM, el agente de configuración del SO tarda diez minutos en comenzar a escribir mensajes de depuración en Cloud Logging. Para reducir este tiempo de espera, reinicia el agente o reinicia la VM. Para obtener más información sobre Cloud Logging, consulta Visualiza los registros de Cloud Logging.
Para ver los registros de depuración, puedes usar las siguientes opciones:
- Cloud Logging: Usa la consola de Google Cloud o Google Cloud CLI
Consola de puerto en serie
Console
Ve a la página Registro > Explorador de registros (Explorador de registros) en la consola deGoogle Cloud :
Si es necesario, selecciona un proyecto de Google Cloud existente en la parte superior de la página o crea uno nuevo.
En la lista desplegable Recurso, selecciona Instancia de VM. Aparecerá una lista de VM disponibles (
instance_id).Haz clic en la VM que deseas ver.
Haz clic en Agregar.
En la lista desplegable Nombre del registro, selecciona OSConfigAgent.
Haz clic en Agregar.
Su archivo debería ser similar al siguiente:
resource.type="gce_instance" resource.labels.instance_id="INSTANCE_ID" logName="projects/PROJECT_ID/logs/OSConfigAgent"
Haga clic en Run query.
gcloud
Ejecuta el comando gcloud logging read:
gcloud logging read "resource.type=gce_instance AND logName=projects/PROJECT_ID/logs/OSConfigAgent"
Reemplaza PROJECT_ID con el ID del proyecto.
Puerto en serie
Para ver la información del registro de depuración desde la consola del puerto en serie, consulta la sección Visualiza la salida de los puertos en serie.
Errores comunes
Problemas de autenticación
Para que VM Manager funcione, debes tener lo siguiente:
- Una cuenta de servicio conectada. VM Manager usa esta cuenta de servicio para firmar solicitudes al servicio de API.
- Asegúrate de que la cuenta de servicio adjunta tenga el rol
roles/logging.logWriterpara escribir registros en la API de Logging. - Agente de servicio de configuración del SO de Google Cloud. VM Manager crea este agente de servicio cuando inicia trabajos de aplicación de parches y le otorga la función de agente de servicio de configuración del SO de Cloud. Para crear políticas del SO, no necesitas configurar este agente de servicio.
Si usas VM Manager y no tienes una cuenta de servicio conectada ni un agente de servicio de configuración del SO de Google Cloud, es posible que veas los siguientes errores mientras trabajas con trabajos de aplicación de parches:
Service account permissions are missing. Verify that the service account has the correct permissions and try again.
OSConfigAgent Error main.go:88: error getting token from metadata: metadata: GCE metadata "instance/service-accounts/default/identity?audience=osconfig.googleapis.com&format=full" not defined
message: "Error running OPERATION_NAME: error calling OPERATION_NAME: code: "PermissionDenied", message: "The caller does not have permission", details: []"
Los problemas de autenticación también pueden evitar que las instancias de VM aparezcan en el panel de parches.
Para resolver estos problemas, intenta realizar una de las siguientes acciones o todas:
- Verifica que todas las VMs tengan una cuenta de servicio conectada.
Asegúrate de que el rol de agente de configuración del SO de Cloud OS (
roles/osconfig.serviceAgent) esté configurado en el agente de servicios de configuración del SO de Google Cloud.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.iam.gserviceaccount.com' \ --role='roles/osconfig.serviceAgent'
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto.PROJECT_NUMBER: El número de tu proyecto.
Se produjo un error mientras se excluían los paquetes para las actualizaciones de parches
Si especificas comodines o caracteres especiales para el nombre de los paquetes cuando excluyes paquetes en un trabajo de aplicación de parche, la Administración de parches de SO puede ignorar la lista y actualizar todos los paquetes.
Para resolver este problema, actualiza el agente de configuración del SO a la versión 20220829.00 y usa barras diagonales (/) para unir el nombre del paquete.
En el siguiente ejemplo, la Administración de parches de SO excluye los paquetes yum con el prefijo google- en el nombre del paquete.
gcloud compute os-config patch-jobs execute --instance-filter-all
--yum-excludes=/google-.*/
Solución alternativa para administrar implementaciones de parches en una organización
Las implementaciones de parches y los trabajos de aplicación de parches se limitan a proyectos individuales de Google Cloud , a diferencia de las políticas del SO, que puedes organizar en una organización o carpeta con orquestadores de políticas.
Como solución alternativa para administrar las implementaciones de parches a gran escala, puedes usar Cloud Asset Inventory y Google Cloud CLI en una secuencia de comandos de Bash para iterar en todos los proyectos de tu organización. Esta secuencia de comandos te permite completar las siguientes tareas:
Permisos y el ID de organización obligatorios
Antes de ejecutar las secuencias de comandos de esta sección, asegúrate de tener los permisos de Identity and Access Management (IAM) necesarios y el ID de organización:
Nivel de organización: Para enumerar todos los proyectos de tu organización con Cloud Asset Inventory, tu cuenta de usuario o de servicio debe tener el permiso
cloudasset.assets.searchAllResources(incluido en el rol de visualizador de recursos de Cloud,roles/cloudasset.viewer) en la organización.Nivel del proyecto de destino: Según las tareas que ejecutes en tu organización, tu cuenta de usuario o de servicio debe tener los siguientes permisos en cada proyecto de destino (por ejemplo, heredados de una vinculación de rol a nivel de la organización):
Para habilitar la API de OS Config y configurar los metadatos del proyecto:
serviceusage.services.enable(Administrador de Service Usage,roles/serviceusage.serviceUsageAdmin) ycompute.projects.setCommonInstanceMetadata(Administrador de instancias de Compute (v1),roles/compute.instanceAdmin.v1).Para crear implementaciones de parches:
osconfig.patchDeployments.create(Administrador de implementación de parches de configuración del SO,roles/osconfig.patchDeploymentAdmin).Para enumerar los trabajos de aplicación de parches y ver los detalles de las instancias de VM:
osconfig.patchJobs.listyosconfig.patchJobs.get(Visualizador de trabajos de aplicación de parches de configuración del SO,roles/osconfig.patchJobViewer).
Para encontrar el ID de organización, ejecuta el
comando gcloud projects get-ancestors
en cualquier proyecto de tu organización:
gcloud projects get-ancestors PROJECT_ID
Reemplaza PROJECT_ID por el ID de un proyecto de tu
organización. En el resultado, se enumeran las carpetas superiores del proyecto y el
ID de organization.
Habilita VM Manager en todos los proyectos
Para habilitar VM Manager en todos los proyectos existentes y futuros de una organización o carpeta, Google recomienda usar políticas de la organización y activación de servicios jerárquica o Terraform.
Como alternativa, para habilitar la API de OS Config (osconfig.googleapis.com)
y establecer los metadatos del proyecto enable-osconfig=TRUE en todos los proyectos existentes
de tu organización con una secuencia de comandos de Bash, ejecuta el siguiente comando:
for project in $(gcloud asset search-all-resources \
--scope=organizations/ORGANIZATION_ID \
--asset-types=cloudresourcemanager.googleapis.com/Project \
--format="csv(additionalAttributes.projectId)" | sed 1d | sort); do
gcloud services enable osconfig.googleapis.com --project="$project"
gcloud compute project-info add-metadata --project="$project" \
--metadata=enable-osconfig=TRUE
done
Reemplaza ORGANIZATION_ID por el ID de tu organización.
Crea una implementación de parches en varios proyectos
Para aplicar un programa de implementación de parches estandarizado en todos los proyectos de tu organización, crea un archivo de configuración de implementación de parches y aplícalo a cada proyecto:
Crea un archivo de plantilla JSON o YAML llamado
patch_deployment_template.jsonque defina el filtro de la instancia de destino, la configuración de parches y el programa. Para obtener más información sobre los campos de configuración admitidos, consulta Crea una implementación de parches y la referencia de recursos dePatchDeployment.Por ejemplo, el siguiente archivo
patch_deployment_template.jsonprograma un trabajo de aplicación de parche semanal recurrente todos los martes a las 7:30 p.m. en la zona horariaAmerica/Los_Angelespara todas las instancias de VM de un proyecto:{ "instanceFilter": { "all": true }, "patchConfig": { "rebootConfig": "DEFAULT" }, "recurringSchedule": { "frequency": "WEEKLY", "weekly": { "dayOfWeek": "TUESDAY" }, "timeOfDay": { "hours": 19, "minutes": 30 }, "timeZone": { "id": "America/Los_Angeles" } } }Ejecuta el siguiente bucle para crear la implementación de parches en cada proyecto de tu organización con el comando
gcloud compute os-config patch-deployments create:for project in $(gcloud asset search-all-resources \ --scope=organizations/ORGANIZATION_ID \ --asset-types=cloudresourcemanager.googleapis.com/Project \ --format="csv(additionalAttributes.projectId)" | sed 1d | sort); do gcloud compute os-config patch-deployments create patch-"$project" \ --project="$project" \ --file=patch_deployment_template.json doneReemplaza
ORGANIZATION_IDpor el ID de tu organización.
Exporta los resultados de los trabajos de aplicación de parches de todos los proyectos a un archivo CSV
Para auditar los resultados de los trabajos de aplicación de parches, puedes usar el
comando gcloud compute os-config patch-jobs list-instance-details
para exportar los detalles de las instancias de VM de los trabajos de aplicación de parches con errores o exitosos a un archivo CSV.
Trabajo de aplicación de parche único: Para exportar las instancias de VM que fallaron o se realizaron de forma correcta en un trabajo de aplicación de parche específico, ejecuta los siguientes comandos:
Exporta las instancias de VM con errores:
gcloud compute os-config patch-jobs list-instance-details PATCH_JOB_ID \ --project=PROJECT_ID \ --filter="state:(FAILED OR TIMED_OUT OR NO_AGENT_DETECTED)" \ --format="csv(name.basename():label=INSTANCE_NAME,zone:label=ZONE,state:label=STATE,failureReason:label=FAILURE_REASON)" > failed_patches.csvInstancias de VM exportadas correctamente:
gcloud compute os-config patch-jobs list-instance-details PATCH_JOB_ID \ --project=PROJECT_ID \ --filter="state=SUCCEEDED" \ --format="csv(name.basename():label=INSTANCE_NAME,zone:label=ZONE,state:label=STATE,attemptCount:label=ATTEMPT_COUNT)" > succeeded_patches.csv
Reemplaza lo siguiente:
PATCH_JOB_ID: el ID del trabajo de aplicación de parchePROJECT_ID: Es el ID del proyecto.
Todos los proyectos de una organización: Para iterar en todos los proyectos de tu organización y exportar las instancias de VM con errores y con éxito en los trabajos de aplicación de parches a archivos CSV, ejecuta la siguiente secuencia de comandos:
echo "PROJECT_ID,PATCH_JOB_ID,INSTANCE_NAME,ZONE,STATE,FAILURE_REASON" > failed_patches.csv echo "PROJECT_ID,PATCH_JOB_ID,INSTANCE_NAME,ZONE,STATE,ATTEMPT_COUNT" > succeeded_patches.csv for project in $(gcloud asset search-all-resources \ --scope=organizations/ORGANIZATION_ID \ --asset-types=cloudresourcemanager.googleapis.com/Project \ --format="csv(additionalAttributes.projectId)" | sed 1d | sort); do for job in $(gcloud compute os-config patch-jobs list \ --project="$project" \ --format="value(name.basename())"); do gcloud compute os-config patch-jobs list-instance-details "$job" \ --project="$project" \ --filter="state:(FAILED OR TIMED_OUT OR NO_AGENT_DETECTED)" \ --format="csv[no-heading](name.basename(),zone,state,failureReason)" | \ sed "s/^/${project},${job},/" >> failed_patches.csv gcloud compute os-config patch-jobs list-instance-details "$job" \ --project="$project" \ --filter="state=SUCCEEDED" \ --format="csv[no-heading](name.basename(),zone,state,attemptCount)" | \ sed "s/^/${project},${job},/" >> succeeded_patches.csv done doneReemplaza
ORGANIZATION_IDpor el ID de tu organización.De forma predeterminada, el comando
gcloud compute os-config patch-jobs listdevuelve hasta 10 trabajos de aplicación de parches por proyecto. Para exportar los resultados solo del trabajo de aplicación de parches más reciente de cada proyecto, agrega--sort-by="~update_time" --limit=1al comandogcloud compute os-config patch-jobs list.
Para obtener informes de cumplimiento de parches y vulnerabilidades en toda la organización en la consola deGoogle Cloud o BigQuery, consulta Visualiza el resumen de parches para las VMs de una organización o carpeta y Visualiza informes de vulnerabilidades de tu organización.