Para crear y administrar políticas de agente, debes usar el
comando gcloud compute instances ops-agents policies
en Google Cloud CLI. Los comandos de este grupo usan el conjunto de herramientas de VM Manager en Compute Engine para administrar las políticas del SO, que puede automatizar la implementación y el mantenimiento de configuraciones de software, como el agente de operaciones. Estas políticas no se pueden aplicar al agente de Monitoring heredado ni al agente de Logging heredado.
gcloud compute instances ops-agents policies
usa recursos de asignación de políticas del SO en la API de configuración del SO. Aunque hay un grupo de comandos general de la CLI de gcloud para administrar las asignaciones de políticas del SO, gcloud compute os-config os-policy-assignments
, el grupo de comandos gcloud compute instances ops-agents policies
está diseñado en particular para las políticas del agente que se describen en este documento.
Antes de comenzar
Antes de usar Google Cloud CLI para crear políticas de agentes, completa los siguientes pasos:
Si aún no lo hiciste, instala la Google Cloud CLI.
Descarga y ejecuta la secuencia de comandos
prepare-for-ops-agents-policies.sh
para habilitar las APIs necesarias y establecer los permisos adecuados para usar Google Cloud CLI.Para obtener información sobre la secuencia de comandos, consulta la secuencia de comandos
prepare-for-ops-agents-policies.sh
.
Desinstala el agente de Monitoring y el agente de Logging heredados
Si creas una política para el Agente de operaciones, asegúrate de que tus VMs no tengan el agente de Logging heredado ni el agente de Monitoring instalados. Ejecutar el Agente de operaciones y los agentes heredados en la misma VM puede causar la transferencia de registros duplicados o un conflicto en la transferencia de métricas. Si es necesario, desinstala el agente de Monitoring y desinstala el agente de Logging antes de crear una política para instalar el Agente de operaciones.Verifica que el agente de configuración del SO esté instalado
Es posible que debas instalar y configurar de forma manual el agente de configuración del SO en las VMs anteriores a la configuración del SO. Para obtener información sobre cómo instalar y verificar el agente de configuración del SO de forma manual, consulta la lista de tareas para la verificación de VM Manager.
Crea una política de agente para administrar el agente de operaciones
Para crear una política de agente, usa el comando gcloud compute instances ops-agents policies
create
.
Este comando tiene la siguiente estructura:
gcloud compute instances ops-agents policies
create
POLICY_ID \
--zone ZONE \
--file path/to/policy-description-file.yaml \
--project PROJECT_ID
Cuando uses este comando, reemplaza las variables de la siguiente manera:
- POLICY_ID es el nombre de tu política.
- ZONE es una zona de Compute Engine. Las políticas de agentes se aplican solo a las VMs en la zona especificada; para aplicar una política en varias zonas, debes crear varias políticas.
- path/to/policy-description-file.yaml es la ruta a un archivo YAML que describe la política. Para obtener información sobre la estructura de este archivo, consulta Describe las políticas del agente.
- PROJECT_ID es el ID de tu proyecto de Google Cloud.
Para obtener más información sobre los demás comandos del grupo de comandos y las opciones disponibles, consulta la documentación gcloud compute instances ops-agents policies
.
Describe las políticas del agente
Proporcionas información sobre a la gcloud compute instances ops-agents policies
create
mediante la creación de un archivo YAML que describa la política y pasa ese archivo al comando como el valor de la opción --file
.
En esta sección, se describe la estructura del archivo de descripción de la política. Para obtener más información, consulta Ejemplo de archivos de descripción de la política.
Formato del archivo YAML de descripción de la política
El archivo de descripción de una política de agente debe incluir dos grupos de campos:
agentsRule
, que le indica a la política del agente si se debe instalar o quitar el agente de operaciones, y especifica la versión del agente de operaciones en la que debe operar.instanceFilter
, que describe las VMs en las que se aplica la política.
Estructura del grupo de campos agentsRule
El grupo de campos agentsRule
tiene la siguiente estructura:
agentsRule:
packageState: installed|removed
version: latest|2.*.*|2.x.y
- El campo
packageState
le indica a la política el estado previsto del agente de operaciones. Los valores válidos soninstalled
yremoved
. El campo
version
indica la versión del agente de operaciones que se debe instalar o quitar. Puedes especificar los siguientes valores:latest
es la versión más reciente del agente de operaciones.2.*.*
es la versión más reciente de la versión principal 2 del agente de operaciones.2.x.y
indica una versión específica de la versión principal 2.
Para obtener información sobre las versiones disponibles del agente de operaciones, consulta el repositorio de GitHub del agente.
Estructura del grupo de campos instanceFilter
En el grupo de campos instanceFilter
, se indican las VMs de una zona a la que se aplica el filtro. Este grupo de campos es una representación YAML de la estructura InstanceFilter
que usa el recurso OSPolicyAssignment
en la API de configuración del SO.
El grupo de campos instanceFilter
tiene una de las siguientes estructuras:
Para aplicar la política de agente a todas las VMs de una zona, usa lo siguiente:
instanceFilter: all: True
Si usas el filtro
all: True
, no puedes especificar ningún otro criterio.Para aplicar la política de agente a un conjunto específico de VM en una zona, describe las VMs mediante una combinación de cualquiera de las siguientes opciones:
- Etiquetas en la VM, ya sea para su inclusión o exclusión:
inclusionLabels:
exclusionLabels:
- Sistema operativo:
inventories:
Por ejemplo, el siguiente filtro aplica la política del agente a las VMs con los sistemas operativos especificados que tienen la etiqueta “env=prod” y no tienen la etiqueta “app=web”:
instanceFilter: inclusionLabels: - labels: env: prod exclusionLabels: - labels: app: web inventories: - osShortName: rhel osVersion: '7.*' - osShortName: debian osVersion: '11'
Para encontrar valores de los campos
osShortName
yosVersion
de una VM, usa los siguientes comandos:gcloud compute instances os-inventory describe INSTANCE_NAME \ --zone ZONE | grep "^ShortName: "
gcloud compute instances os-inventory describe INSTANCE_NAME \ --zone ZONE | grep "^Version: "
Estos comandos requieren que se instale el agente de configuración del SO en la VM.
- Etiquetas en la VM, ya sea para su inclusión o exclusión:
Verifica el estado de las políticas del agente
En esta sección, se describe cómo verificar el estado de las políticas creadas y la instalación del Agente de operaciones. Esta información también puede ayudar a solucionar problemas de las políticas de tu agente.
Página de políticas del SO de Compute Engine
En la página Políticas del SO de Compute Engine, se proporciona información sobre las políticas de agentes que administran el agente de operaciones y sobre las VMs en la pestaña Instancias de VM. Por ejemplo:
- La columna Estado indica si una política se instaló correctamente (“En cumplimiento”), en curso (“Pendiente”), posiblemente con errores (“Desconocido”) o faltante (“Sin políticas").
- La columna VM supervisada indica si la configuración del SO administra el agente de operaciones (“Supervisado”) o no (“No supervisado”).
Si una política es “En cumplimiento”, pero la VM muestra “No supervisado”, es posible que haya un problema para instalar el Agente de operaciones. Por ejemplo, es posible que tengas un agente heredado ya instalado.
En la consola de Google Cloud, ve a la página Políticas del SO:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Compute Engine.
En las instancias de VM en la pestaña Políticas del SO de Compute Engine, se muestra información sobre los agentes administrados por todas las políticas del SO en tu proyecto de Google Cloud. Estas políticas están etiquetadas como goog-ops-agent-policy
.
- El indicador
goog-ops-agent-policy
incluye varios tipos de políticas:- Políticas creadas mediante los comandos
gcloud compute instances ops-agents policies
. - Políticas que se crearon para ti si solicitaste la instalación del agente de operaciones cuando creaste la VM.
- Políticas creadas mediante Terraform para administrar el Agente de operaciones.
Para distinguir entre políticas, usa la pestaña Asignaciones de políticas del SO en la página para ver los IDs de políticas de todas las asignaciones de políticas en tu proyecto de Google Cloud.
- Políticas creadas mediante los comandos
- Esta columna Supervisión de VM no refleja la instalación del agente de operaciones por otros medios, como la instalación manual o las políticas del agente beta.
Página Instancias de VM de Cloud Monitoring
La página Instancias de VM en Cloud Monitoring incluye una columna Agente que enumera el agente instalado en cada VM y, para el Agente de operaciones, incluye un indicador del agentes instalados anteriores a la última versión.
En la consola de Google Cloud, ve a la página Instancias de VM:
Ve al Panel de instancias de VM
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
Ejemplos de archivos de descripción de política
En esta sección, se proporcionan algunos ejemplos de archivos YAML de descripción de la política en una variedad de situaciones. En los ejemplos, se supone que colocas el YAML en un archivo llamado agent-policy-description.yaml
y que creas la política en la zona us-central1-a
mediante un comando como el siguiente:
gcloud compute instances ops-agents policies
create
POLICY_ID \
--zone us-central1-a \
--file agent-policy-description.yaml \
--project PROJECT_ID
Instala en todas las VMs
Para instalar la última versión del agente de operaciones en todas las VMs de la zona us-central1-a
, usa la siguiente descripción de la política:
agentsRule:
packageState: installed
version: latest
instanceFilter:
all: True
Quita de todas las VMs
Para quitar la última versión del agente de operaciones en todas las VMs de la zona us-central1-a
, usa la siguiente descripción de la política:
agentsRule:
packageState: removed
version: latest
instanceFilter:
all: True
Instala en VMs según las etiquetas
Para instalar la última versión del agente de operaciones en todas las VMs de la zona us-central1-a
con la etiqueta “env=prod” o “app=web”, usa la siguiente descripción de la política:
agentsRule:
packageState: installed
version: latest
instanceFilter:
inclusionLabels:
- labels:
env: prod
- labels:
app: web
Cuando especificas varias entradas labels:
para su inclusión o exclusión, una VM coincide si alguna de las etiquetas está presente; es decir, los conjuntos de etiquetas para inclusión o exclusión coinciden como una operación OR
lógica, no una operación AND
lógica.
Instala en VMs basadas en otras etiquetas
Para instalar la última versión del agente de operaciones en todas las VMs de la zona us-central1-a
que ejecutan Debian 11, excepto aquellas con las etiquetas “env=prod” y “app=web6”, usa la siguiente descripción de política:
agentsRule:
packageState: installed
version: latest
instanceFilter:
exclusionLabels:
- labels:
env: prod
app: web6
inventories:
- osShortName: debian
osVersion: '11'
Cuando especificas varios pares clave-valor en una sola entrada labels:
para inclusión o exclusión, una VM coincide si todas las etiquetas están presentes, es decir, las etiquetas coinciden como un operación AND
lógica, no una operación OR
lógica.
Instala en VMs según el sistema operativo
Para instalar la última versión 2 del agente de operaciones en todas las VMs que ejecutan Debian 11 o RHEL 7.* en la zona us-central1-a
, usa la siguiente descripción de política:
agentsRule:
packageState: installed
version: 2.*.*
instanceFilter:
inventories:
- osShortName: rhel
osVersion: '7.*'
- osShortName: debian
osVersion: '11'
Soluciona problemas de políticas del agente de DG
En esta sección, se proporciona información para ayudarte a resolver problemas con las políticas del agente de DG para el agente de operaciones. La información que se describe en Verifica el estado de las políticas del agente también puede ser útil.
Los comandos ops-agents policy
fallan
Cuando un comando gcloud compute instances ops-agents policies
falla, la respuesta muestra un
error de validación. Resuelve esos errores mediante la corrección de las marcas y los argumentos del comando como lo sugiere el mensaje de error.
Además de los errores de validación, es posible que veas errores que indiquen las siguientes condiciones:
- Permiso de IAM insuficiente
- La API de configuración del SO no está habilitada
- La política especificada no existe
En las siguientes secciones, se describen esos pasos con más detalle.
Permiso de IAM insuficiente
Si un comando gcloud compute instances ops-agents policies
falla con un error de permiso, asegúrate de haber ejecutado la secuencia de comandos prepare-for-ops-agents-policies.sh
como se describe en Antes de comenzar para configurar los roles de la política de configuración del SO:
-
Administrador de OSPolicyAssignment (
roles/osconfig.osPolicyAssignmentAdmin
): Proporciona acceso completo a las asignaciones de políticas del SO.
-
Editor de OSPolicyAssignment (
roles/osconfig.osPolicyAssignmentEditor
): Permite que los usuarios obtengan, actualicen y enumeren asignaciones de políticas del SO.
-
Visualizador de OSPolicyAssignment (
roles/osconfig.osPolicyAssignmentViewer
): Proporciona acceso de solo lectura para obtener y enumerar asignaciones de políticas de SO.
Para obtener más información sobre la secuencia de comandos prepare-for-ops-agents-policies.sh
, consulta La secuencia de comandos prepare-for-ops-agents-policies.sh
.
La API de configuración del SO no está habilitada
Un error de muestra se parece al siguiente ejemplo:
API [osconfig.googleapis.com] not enabled on project PROJECT_ID.
Would you like to enable and retry (this will take a few minutes)?
(y/N)?
Puedes ingresar y
para habilitar la API o ejecutar la secuencia de comandos prepare-for-ops-agents-policies.sh
, que se describe en Antes de comenzar, para otorgar todo lo necesario. permisos. Si ingresas y
en el mensaje de error, aún debes ejecutar la secuencia de comandos prepare-for-ops-agents-policies.sh
para configurar los permisos necesarios.
A fin de verificar que la API de configuración del SO esté habilitada para el proyecto, ejecuta los siguientes comandos:
gcloud services list --project PROJECT_ID | grep osconfig.googleapis.com
El resultado esperado es el siguiente:
osconfig.googleapis.com Cloud OS Config API
La política no existe
Un error de muestra se parece al siguiente ejemplo:
NOT_FOUND: Requested entity was not found
Este error puede significar que la política nunca se creó, que se borró la política o que el ID de la política especificado es incorrecto. Asegúrate de que el POLICY_ID que se usa en un comando gcloud compute instances ops-agents policies
describe
, update
o delete
corresponda a una política existente. Para obtener una lista de políticas de agentes, usa el comando gcloud compute instances ops-agents policies
list
.
Se crea la política, pero parece no tener efecto
Los agentes de configuración del SO se implementan en cada instancia de Compute Engine a fin de administrar los paquetes de los agentes de Logging y Monitoring. Es posible que la política no tenga efecto si el agente de configuración del SO subyacente no está instalado.
Linux
Para verificar que el agente de configuración del SO esté instalado, ejecuta el siguiente comando:
gcloud compute ssh instance-id \
--project project-id \
-- sudo systemctl status google-osconfig-agent
El siguiente es un resultado de muestra:
google-osconfig-agent.service - Google OSConfig Agent
Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
Main PID: 369 (google_osconfig)
Tasks: 8 (limit: 4374)
Memory: 102.7M
CGroup: /system.slice/google-osconfig-agent.service
└─369 /usr/bin/google_osconfig_agent
Windows
Para verificar que el agente de configuración del SO esté instalado, ejecuta el siguiente comando:
Conéctate a tu instancia mediante RDP o una herramienta similar y accede a Windows.
Abre una terminal de PowerShell y ejecuta los siguientes comandos de PowerShell. No necesitas privilegios de administrador.
Get-Service google_osconfig_agent
El siguiente es un resultado de muestra:
Status Name DisplayName
------ ---- -----------
Running google_osconfig_a… Google OSConfig Agent
Si el agente de configuración del SO no está instalado, es posible que uses un sistema operativo que no sea compatible con VM Manager. En el documento Detalles del sistema operativo de Compute Engine, se indica qué características de VM Manager son compatibles con cada sistema operativo de Compute Engine.
Si el sistema operativo es compatible con VM Manager, puedes instalar el agente de configuración del SO de forma manual.
El agente de configuración del SO está instalado, pero no lo instala el Agente de operaciones
Para verificar si hay algún error cuando el agente de configuración del SO aplica las políticas, puedes verificar el registro del agente de configuración del SO. Esto se puede hacer mediante el Explorador de registros o SSH o RDP para verificar instancias individuales de Compute Engine.
Para ver los registros del agente de configuración del SO en el explorador de registros, usa el siguiente filtro:
resource.type="gce_instance"
logId(OSConfigAgent)
Para ver los registros del agente de configuración del SO, haz lo siguiente:
CentOS, RHEL,
SLES, SUSE
Ejecuta el siguiente comando:
gcloud compute ssh INSTANCE_ID \
--project PROJECT_ID \
-- sudo cat /var/log/messages \
| grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
Debian/ Ubuntu
Ejecuta el siguiente comando:
gcloud compute ssh INSTANCE_ID \
--project PROJECT_ID \
-- sudo cat /var/log/syslog \
| grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
Windows
Conéctate a tu instancia mediante RDP o una herramienta similar y accede a Windows.
Abre la app Visualizador de eventos, selecciona Registros de Windows > Aplicación y busca registros que tengan
Source
igual aOSConfigAgent
.
Si se produce un error cuando se establece la conexión al servicio de configuración del SO, asegúrate de ejecutar la secuencia de comandos prepare-for-ops-agents-policies.sh
como se describe en Antes de comenzar para establecer la configuración del SO.
Para verificar que los metadatos de configuración del SO estén habilitados, puedes ejecutar el siguiente comando:
gcloud compute project-info describe \
--project PROJECT_ID \
| grep "enable-osconfig\|enable-guest-attributes" -A 1
El resultado esperado es el siguiente:
- key: enable-guest-attributes
value: 'TRUE'
- key: enable-osconfig
value: 'TRUE'
El Agente de operaciones está instalado, pero no funciona de forma correcta
Para obtener más información sobre cómo depurar problemas del agente de operaciones, consulta Soluciona problemas del agente de operaciones.
Habilita los registros de nivel de depuración para el agente de configuración del SO
Puede ser útil habilitar el registro de nivel de depuración en el agente de configuración del SO cuando se informa un problema.
Puedes configurar los metadatos osconfig-log-level: debug
a fin de habilitar el registro de nivel de depuración del agente de configuración del SO. Los registros recopilados tienen más información que ayuda a la investigación.
Ejecuta el siguiente comando para habilitar el registro de nivel de depuración en todo el proyecto:
gcloud compute project-info add-metadata \
--project PROJECT_ID \
--metadata osconfig-log-level=debug
Si deseas habilitar el registro de nivel de depuración de una VM, ejecuta el siguiente comando:
gcloud compute instances add-metadata INSTANCE_ID \
--project PROJECT_ID \
--metadata osconfig-log-level=debug
Secuencias de comandos auxiliares
En esta sección, se proporciona información adicional sobre las secuencias de comandos auxiliares descritas en este documento:
- La secuencia de comandos
prepare-for-ops-agents-policies.sh
- La secuencia de comandos
diagnose_policies.sh
La secuencia de comandos prepare-for-ops-agents-policies.sh
Después de descargar la secuencia de comandos prepare-for-ops-agents-policies.sh
, puedes usarla para realizar las siguientes acciones, según los argumentos que proporciones:
Habilita la API de Cloud Logging, la API de Cloud Monitoring y la API de configuración del SO del proyecto.
Si la API de configuración del SO aún no estaba habilitada, se habilita en modo de funciones limitadas, que es suficiente para administrar las políticas de agentes. Para obtener más información, consulta Precios.
Otorga los roles de Identity and Access Management Escritor de registros (
roles/logging.logWriter
) y Escritor de métricas de Monitoring (roles/monitoring.metricWriter
) a la cuenta de servicio predeterminada de Compute Engine para que los agentes puedan escribir registros y métricas en las APIs de Logging y Cloud Monitoring.Habilita los metadatos de configuración del SO del proyecto de modo que esté activo el agente de configuración del SO en cada VM.
Otorga uno de los siguientes roles de IAM a la cuenta de servicio o usuario de usuarios que no sean propietarios necesarios para crear y administrar políticas. Los propietarios del proyecto tienen acceso completo para crear y administrar políticas; todos los demás usuarios o cuentas de servicio deben tener uno de los siguientes roles:
-
Administrador de OSPolicyAssignment (
roles/osconfig.osPolicyAssignmentAdmin
): Proporciona acceso completo a las asignaciones de políticas del SO.
-
Editor de OSPolicyAssignment (
roles/osconfig.osPolicyAssignmentEditor
): Permite que los usuarios obtengan, actualicen y enumeren asignaciones de políticas del SO.
-
Visualizador de OSPolicyAssignment (
roles/osconfig.osPolicyAssignmentViewer
): Proporciona acceso de solo lectura para obtener y enumerar asignaciones de políticas de SO.
Cuando ejecutas la secuencia de comandos, puedes especificar los roles de OSPolicyAssignment como
admin
,editor
oviewer
. La secuencia de comandos asigna esos valores a los nombres de los rolesroles/osconfig.osPolicyAssignment*
.-
Administrador de OSPolicyAssignment (
En los siguientes ejemplos, se muestran algunas invocaciones comunes para la secuencia de comandos. Para obtener más información, consulta los comentarios en la secuencia de comandos.
Para habilitar las API, otorgar los roles necesarios a la cuenta de servicio predeterminada y habilitar los metadatos de configuración del SO de un proyecto, ejecuta la secuencia de comandos de la siguiente manera:
bash prepare-for-ops-agents-policies.sh --project=PROJECT_ID
Además, para otorgar una de las funciones de configuración del SO a un usuario que no tiene la función de propietario (roles/owner
) en el proyecto, ejecuta la secuencia de comandos de la siguiente manera:
bash prepare-for-ops-agents-policies.sh --project=PROJECT_ID \ --iam-user=USER_EMAIL \ --iam-policy-access=[admin|editor|viewer]
Además, para otorgar una de las funciones de configuración del SO a una cuenta de servicio no predeterminada, ejecuta la secuencia de comandos de la siguiente manera:
bash prepare-for-ops-agents-policies.sh --project=PROJECT_ID \ --iam-service-account=SERVICE_ACCT_EMAIL \ --iam-policy-access=[admin|editor|viewer]
La secuencia de comandos diagnose_policies.sh
Con un ID del proyecto, un ID de la instancia de Compute Engine, una zona de Compute Engine y el ID de política del agente, la secuencia de comandos diagnose_policies.sh
recopila automáticamente la información necesaria para diagnosticar problemas con la política:
- La versión del agente de configuración del SO
- La asignación de la política del SO subyacente
- Las asignaciones de políticas del SO que se aplican a esta instancia de Compute Engine
- Una descripción de esta instancia de Compute Engine
Para invocar la secuencia de comandos, ejecuta el siguiente comando:
bash diagnose_policies.sh --project-id=PROJECT_ID \ --gce-instance-id=INSTANCE_ID \ --policy-id=POLICY_ID \ --zone=ZONE
Precios
Los comandos gcloud compute instances ops-agents policies
se implementan mediante los recursos de asignación de política del SO de VM Manager.
La secuencia de comandos prepare-for-ops-agents-policies.sh
, que se describe en Antes de comenzar, configura VM Manager en modo de funciones limitadas (OSCONFIG_B
), que es suficiente para crear y administrar políticas de agentes. No se cobra por usar VM Manager en modo limitado.
Si configuraste VM Manager en el modo de todas las funciones (OSCONFIG_C
), es posible que se generen costos.