Gestione dei criteri degli agenti

I criteri dell'agente consentono l'installazione e la manutenzione automatizzate degli agenti della suite operativa di Google Cloud su un parco di VM che corrispondono ai criteri specificati dall'utente. Con un solo comando, puoi creare un criterio per il tuo progetto Google Cloud che regola le VM esistenti e nuove associate al progetto Cloud, garantendo un'installazione corretta e un upgrade automatico facoltativo di tutti gli agenti.

Sistemi operativi supportati

Puoi applicare un criterio dell'agente alle istanze di Compute Engine con i seguenti sistemi operativi.

Logging agent è mappato ai criteri con tipo di agente logging. Monitoring agent è mappato ai criteri con tipo di agente metrics. Ops Agent è mappato ai criteri con tipo di agente ops-agent.

Sistema operativo Agente Logging Agente Monitoring Agente operazioni
CentOS 7
CentOS 8
Rocky Linux 8
RHEL 6
RHEL 7:
rhel-7, rhel-7-6-sap-ha, rhel-7-7-sap-ha, rhel-7-9-sap-ha
1
RHEL 8:
rhel-8, rhel-8-1-sap-ha, rhel-8-2-sap-ha, rhel-8-4-sap-ha
1
Debian 9 (Stretch)
Debian 10 (Buster)
Debian 11 (Bullseye)
Ubuntu LTS 18.04 (Bionic Beaver):
ubuntu-1804-lts, ubuntu-minimal-1804-lts
Ubuntu LTS 20.04 (Focal Fossa):
ubuntu-2004-lts, ubuntu-minimal-2004-lts
SLES 12:
sles-12, sles-12-sp3-sap, sles-12-sp4-sap, sles-12-sp5-sap
SLES 15:
sles-15, sles-15-sap, sles-15-sp1-sap, sles-15-sp2-sap
OpenSUSE Leap 15:
opensuse-leap (opensuse-leap-15-2-*, openuse-leap-15-3-*)
Windows Server:
2012, R2, 2016, 2019, Core 2012 R2, Core 2016, Core 2019

1 L'agente Monitoring non è supportato su rhel-7-9-sap-ha, rhel-8-2-sap-ha o rhel-8-4-sap-ha.

Creazione di un criterio agente

Per creare un criterio dell'agente utilizzando l'interfaccia a riga di comando di Google Cloud, segui questi passaggi:

  1. Se non l'hai ancora fatto, installa l'interfaccia a riga di comando di Google Cloud.

    Nell'interfaccia a riga di comando gcloud, il gruppo di comandi per la gestione dei criteri dell'agente è in versione beta.

  2. Se non lo hai già fatto, installa il componente beta dell'interfaccia a riga di comando gcloud:

    gcloud components install beta
    

    Per verificare se il componente beta è installato per, esegui:

    gcloud components list
    
    1. Se in precedenza hai installato il componente beta, assicurati di disporre della versione più recente:

      gcloud components update
      
  3. Utilizza il seguente script per abilitare le API e impostare le autorizzazioni appropriate per l'utilizzo dell'interfaccia a riga di comando di Google Cloud: set-permissions.sh.

    Per informazioni sullo script, consulta la sezione Che cosa sta facendo lo script set-permissions.sh?.

  4. Usa il comando gcloud beta compute instances ops-agents policies create per creare un criterio. Per la sintassi del comando, consulta la documentazione di gcloud beta compute instances ops-agents policies create.

    Per esempi su come formattare il comando, consulta la sezione Esempi nella documentazione dell'interfaccia a riga di comando di Google Cloud.

    Per ulteriori informazioni sui comandi dell'interfaccia a riga di comando gcloud disponibili e sulle opzioni disponibili, consulta la documentazione di gcloud beta compute instances ops-agents policies.

Best practice per l'utilizzo dei criteri agente

Per controllare l'impatto sui sistemi di produzione durante l'implementazione, consigliamo di utilizzare le etichette e le zone delle istanze per filtrare le istanze a cui si applica il criterio.

Ecco un esempio di piano di implementazione graduale per le VM CentOS 7:

Fase 1: crea un criterio per scegliere come target tutte le VM con le etichette env=test e app=myproduct.

gcloud beta compute instances \
    ops-agents policies create ops-agents-policy-safe-rollout \
    --agent-rules="type=logging,version=current-major,package-state=installed,enable-autoupgrade=true;type=metrics,version=current-major,package-state=installed,enable-autoupgrade=true" \
    --os-types=short-name=centos,version=7 \
    --group-labels=env=test,app=myproduct \
    --project=my_project

Per ulteriori informazioni su come specificare il sistema operativo, vedi gcloud beta compute instances ops-agents policies create.

Fase 2: aggiorna il criterio in modo che abbia come target env=prod e app=myproduct e solo una zona.

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --group-labels=env=prod,app=myproduct \
    --zones=us-central1-c \

Fase 3: aggiorna il criterio per cancellare il filtro delle zone in modo che venga implementato a livello globale

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --clear-zones

Limitazioni

Affinché un criterio abbia effetto sulle VM che prerilasciano OS Config, è necessaria una configurazione aggiuntiva per garantire che l'agente OS Config su cui si basa il criterio sia installato sulle VM. Per installare l'agente OS Config su un gruppo di VM, completa i passaggi seguenti:

  1. Assicurati di aver eseguito lo script set-permissions.sh nella sezione Creazione di un criterio dell'agente.

  2. Decidi su quali VM vuoi installare l'agente OS Config ed elencale in un file CSV.

    Per ottenere un elenco di tutte le istanze non gestite da Google (ad esempio, Google Kubernetes Engine o Google App Engine) in un file CSV, esegui:

      gcloud compute instances list \
          --filter="-labels.list(show="keys"):goog-" \
          --format="csv(name,zone)" \
          | grep -v -x -F -f  <(gcloud compute instances os-inventory list-instances \
              --format="csv(name,zone)") \
          | sed 's/$/,update/' > instances.csv
    

    La sezione grep filtra le VM in cui è già installato e abilitato l'agente OS Config. L'esclusione di etichette VM basata su goog- filtra le VM di Compute Engine gestite da GKE, App Engine e così via.

    Per filtrare ulteriormente le istanze in base alle zone o alle etichette, modifica il valore --filter in modo simile al seguente:

      "-labels.list(show="keys"):goog- AND zone:(ZONE_1,ZONE_2) AND labels.KEY_1:VALUE_1 AND labels.KEY_2=VALUE_2"
    
  1. Scarica ed esegui lo script mass-install-osconfig-agent.sh seguendo le istruzioni nello script per eseguire un comando come:

       bash mass-install-osconfig-agent.sh --project project-id --input-file instances.csv
    

    Questo script automatizza le istruzioni dell'installazione dell'agente OS Config.

Risolvere i problemi

I comandi del criterio ops-agents non riescono

Se i comandi del criterio ops-agents non riescono, viene mostrato un errore di convalida corrispondente. Correggi questi errori correggendo gli argomenti e i flag del comando come suggerito dal messaggio di errore.

Oltre agli errori di convalida, potresti vedere i seguenti errori:

  • Autorizzazione IAM insufficiente

    Esempio di errore:

    ERROR: (gcloud.beta.compute.instances.ops-agents.policies.XXX) PERMISSION_DENIED: Caller does not have required permission to XXX
    

    Assicurati di eseguire lo script set-permissions.sh nella sezione Creazione di un criterio dell'agente per configurare il ruolo IAM specifico per osconfig.guestPolicy.

    Per verificare se disponi del ruolo sufficiente del criterio guest di OS Config per il progetto, puoi eseguire il comando seguente. In questo esempio, il comando controlla se l'utente ha il ruolo roles/osconfig.guestPolicyAdmin. GCLOUD_MEMBER deve essere nel formato user:USER_EMAIL o serviceaccount:SERVICE_ACCOUNT_EMAIL.

    gcloud projects get-iam-policy project-id \
        --filter=--member=gcloud-member \
        | grep "roles/osconfig.guestPolicyAdmin" -B 2
    

    L'output previsto è:

    - members:
      - gcloud-member
      role: roles/osconfig.guestPolicyAdmin
    
  • API Osconfig non abilitata

    Esempio di errore:

    API [osconfig.googleapis.com] not enabled on project [XXX].
    Would you like to enable and retry (this will take a few minutes)?
    (y/N)?
    

    Assicurati di eseguire lo script set-permissions.sh nella sezione Creazione di un criterio agente per concedere tutte le autorizzazioni necessarie.

    Per verificare se l'API OS Config è abilitata per il progetto, puoi eseguire i seguenti comandi:

    gcloud services list --project project-id \
        | grep osconfig.googleapis.com
    

    L'output previsto è:

    osconfig.googleapis.com    Cloud OS Config API
    
  • Il criterio non esiste

    Esempio di errore:

    NOT_FOUND: Requested entity was not found
    

    Ciò indica che il criterio è già stato eliminato. Assicurati che l'ID criterio nel comando describe, update o delete corrisponda a un criterio esistente.

La norma è stata creata, ma sembra non avere alcun effetto

Il deployment degli agenti OS Config viene eseguito in ogni istanza di Compute Engine per gestire i pacchetti per gli agenti Logging e Monitoring. Il criterio potrebbe sembrare non avere alcun effetto se l'agente OS Config sottostante non è installato.

LINUX

Per verificare che l'agente OS Config sia installato, esegui il comando seguente:

gcloud compute ssh instance-id \
    --project project-id \
    -- sudo systemctl status google-osconfig-agent

Ecco un output di esempio:

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

Finestre

Per verificare che l'agente OS Config sia installato, esegui i seguenti passaggi:

  1. Connettiti all'istanza utilizzando RDP o uno strumento simile e accedi a Windows.

  2. Apri un terminale PowerShell, quindi esegui il seguente comando di PowerShell. Non hai bisogno dei privilegi di amministratore.

    Get-Service google_osconfig_agent
    

Le istanze di SUSE e Ubuntu Compute Engine non hanno l'agente di OS Config preinstallato, pertanto devi seguire le istruzioni di installazione dell'agente di OS Config per far installare l'agente di OS Config su tali istanze di Compute Engine.

L'agente OS Config è installato, ma non installa gli agenti operativi.

Per verificare se sono presenti errori quando l'agente OS Config applica i criteri, puoi controllare il log dell'agente OS Config. Questa operazione può essere eseguita tramite Esplora log o tramite SSH / RDP in singole istanze di Compute Engine.

Per visualizzare i log dell'agente OS Config in Esplora log, utilizza il filtro seguente:

resource.type="gce_instance"
logName="projects/project-id/logs/OSConfigAgent"

Per visualizzare i log dell'agente OS Config tramite SSH per le singole istanze Linux di Compute Engine, esegui il comando seguente:

  • CentOS / RHEL / SLES / SUSE

    gcloud compute ssh instance-id \
        --project project-id \
        -- sudo cat /var/log/messages \
           | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
    
  • Debian / Ubuntu

    gcloud compute ssh instance-id \
        --project project-id \
        -- sudo cat /var/log/syslog \
           | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
    

Per visualizzare i log dell'agente OS Config tramite RDP per singole istanze Windows di Compute Engine, esegui i seguenti passaggi:

  1. Connettiti all'istanza utilizzando RDP o uno strumento simile e accedi a Windows.

  2. Apri l'app Event Viewer, in Windows Logs => Application, cerca i log con Source uguale a OSConfigAgent.

Se si verifica un errore di connessione al servizio OS Config, assicurati di eseguire lo script set-permissions.sh nella sezione Creating a Agent Policy per configurare i metadati.

Per verificare che i metadati di OS Config siano abilitati, puoi eseguire il comando seguente:

gcloud compute project-info describe \
    --project project-id \
    | grep "enable-osconfig\|enable-guest-attributes" -A 1

L'output previsto è:

- key: enable-guest-attributes
  value: 'TRUE'
- key: enable-osconfig
  value: 'TRUE'

Gli agenti operativi sono installati, ma non funzionano correttamente

Consulta le pagine di risoluzione dei problemi di Agente di Logging e Monitoring per eseguire il debug di problemi specifici.

Abilitazione dei log a livello di debug

È molto utile attivare il logging a livello di debug dell'agente OS Config quando viene segnalato un problema.

Puoi impostare i metadati osconfig-log-level: debug per attivare il logging a livello di debug per l'agente OS Config. I log raccolti hanno maggiori informazioni utili per l'indagine.

Per abilitare il logging a livello di debug per l'intero progetto, esegui il comando seguente:

gcloud compute project-info add-metadata \
    --project project-id \
    --metadata osconfig-log-level=debug

Per abilitare il logging a livello di debug per una VM, esegui questo comando:

gcloud compute instances add-metadata instance-id \
    --project project-id \
    --metadata osconfig-log-level=debug

Informazioni aggiuntive

Qual è lo script dello set-permissions.sh?

In base a un ID progetto, un ruolo IAM (Identity and Access Management) e un account di servizio, lo script set-permissions.sh esegue le seguenti azioni:

  • Abilita l'API Cloud Logging, l'API Cloud Monitoring e l'API OS Config per il progetto.

  • Concede i ruoli roles/logging.logWriter e roles/monitoring.metricWriter all'account di servizio predefinito di Compute Engine in modo che gli agenti possano scrivere log e metriche nelle API di Logging e Cloud Monitoring.

  • Abilita i metadati OS Config per il progetto in modo che gli agenti OS Config siano attivati sulle VM.

  • Concede il ruolo IAM specificato all'utente gcloud o all'account di servizio. I proprietari del progetto dispongono dell'accesso completo per creare e gestire un criterio. Per tutti gli altri utenti o account di servizio, i proprietari del progetto devono concedere uno dei seguenti ruoli:

    • roles/osconfig.guestPolicyAdmin: fornisce accesso completo a un criterio.

    • roles/osconfig.guestPolicyEditor: consente agli utenti di recuperare, aggiornare ed elencare un criterio.

    • roles/osconfig.guestPolicyViewer: fornisce accesso in sola lettura per generare ed elencare un criterio.

Guarda l'utilizzo di esempio nei commenti dello script.

Qual è lo script dello diagnose.sh?

In base a un progetto, un ID istanza di Compute Engine e un ID criterio dell'agente operativo, lo script diagnose.sh raccoglie automaticamente le informazioni necessarie per diagnosticare i problemi del criterio:

  • La versione dell'agente OS Config

  • Il criterio guest di OS Config sottostante

  • I criteri applicabili a questa istanza di Compute Engine

  • I repository del pacchetto dell'agente di cui viene eseguito il pull in un'istanza di Compute Engine

Integrazione Terraform

Il supporto di Terraform si basa sui comandi dell'interfaccia a riga di comando di Google Cloud. Per creare un criterio agente utilizzando Terraform, segui le istruzioni relative al modulo Teraform.