I progetti che includono configurazioni Terraform richiedono l'accesso a un ambiente di runtime di Terraform che viene integrato con il prodotto Automation Assembler in locale.

Come aggiungere un runtime Terraform

L'ambiente di runtime è costituito da un cluster Kubernetes che esegue i comandi della CLI di Terraform per eseguire le operazioni richieste. Inoltre, il runtime raccoglie i registri e restituisce i risultati dai comandi della CLI di Terraform.

Il prodotto VMware Aria Automation in locale richiede agli utenti di configurare il proprio cluster Kubernetes di runtime di Terraform. È supportato un solo runtime di Terraform per organizzazione. Tutte le distribuzioni di Terraform per tale organizzazione utilizzano lo stesso runtime.

Nota:

Per eseguire i comandi e gli stati di Terraform, sono necessari un ambiente di runtime di Terraform eseguito su K8s. Quando si crea l'integrazione di Terraform in VMware Aria Automation locale, è possibile scegliere tra un cluster k8 gestito (che è un cluster k8s già gestito da VMware Aria Automation) o un cluster k8s esterno (che è un cluster k8s non gestito da VMware Aria Automation) e lo spazio dei nomi in cui verranno creati i pod Terraform. Se si utilizza un cluster esterno, è necessario fornire a Kubeconfig l'accesso al cluster K8s per la destinazione del runtime Terraform. Kubeconfig è uno standard K8s e Kubeconfig non deve essere un Kubeconfig di amministrazione. È possibile utilizzare un account di servizio con autorizzazioni minime, ad esempio l'autorizzazione per eseguire pod in uno spazio dei nomi e l'autorizzazione a generare un Kubeconfig da utilizzare con l'integrazione del runtime Terraform di VMware Aria Automation.

  1. Verificare di disporre di un cluster Kubernetes in cui eseguire la CLI Terraform.
    • Tutti gli utenti possono fornire un file kubeconfig per eseguire la CLI di Terraform in un cluster Kubernetes non gestito.
    • Gli utenti delle licenze aziendali possono scegliere se eseguire la CLI Terraform in un cluster Kubernetes gestito da VMware Aria Automation.

      In Automation Assembler, passare a Infrastruttura > Risorse > Kubernetes e verificare di disporre di un cluster Kubernetes. Vedere Come si utilizza Kubernetes in Automation Assembler se è necessario aggiungerne uno.

  2. Se il cluster Kubernetes è stato aggiunto o modificato di recente, attendere il completamento della raccolta dati.

    La raccolta dati recupera l'elenco degli spazi dei nomi e altre informazioni e potrebbe richiedere fino a 5 minuti in base al provider.

  3. Una volta completata la raccolta dati, passare a Infrastruttura > Connessioni > Integrazioni > Aggiungi integrazione e selezionare la scheda Runtime di Terraform.
  4. Immettere le impostazioni.
    Figura 1. Esempio di integrazione di runtime Terraform
    Esempio di integrazione di runtime Terraform per gli utenti con licenze avanzate
    Impostazione Descrizione
    Nome Assegnare un nome univoco all'integrazione del runtime.
    Descrizione Fornire una spiegazione dello scopo dell'integrazione.
    Integrazione runtime Terraform:
    Tipo di runtime (solo aziendale) Gli utenti delle licenze aziendali possono scegliere se eseguire la CLI Terraform in un cluster Kubernetes gestito da VMware Aria Automation o uno non gestito.
    Kubeconfig Kubernetes (tutti gli utenti)

    Per un cluster Kubernetes non gestito, incollare l'intero contenuto del file kubeconfig per il cluster esterno.

    Per utilizzare un runtime Kubernetes esterno con un server proxy, vedere Come aggiungere supporto proxy.

    Questa opzione è disponibile per tutti gli utenti.

    Cluster Kubernetes (solo aziendale)

    Per Kubernetes gestito da VMware Aria Automation, selezionare il cluster in cui eseguire la CLI Terraform.

    Il cluster e il file kubeconfig devono essere raggiungibili. È possibile convalidare l'accesso a kubeconfig con un comando GET in /cmx/api/resources/k8s/clusters/{clusterId}/kube-config.

    Questa opzione è disponibile solo per le licenze aziendali.

    Spazio dei nomi Kubernetes Selezionare lo spazio dei nomi da utilizzare all'interno del cluster per la creazione di pod che eseguono la CLI di Terraform.
    Impostazioni contenitore runtime:
    Immagine Immettere il percorso dell'immagine del contenitore della versione Terraform che si desidera eseguire.
    Nota: Il pulsante CONVALIDA non verifica l'immagine del contenitore.
    Richiesta CPU Immettere la quantità di CPU per i contenitori in esecuzione. Il valore predefinito è 250 millicore.
    Limite CPU Immettere la CPU massima consentita per i contenitori in esecuzione. Il valore predefinito è 250 millicore.
    Richiesta memoria Immettere la quantità di memoria per i contenitori in esecuzione. Il valore predefinito è 512 MB.
    Limite di memoria Immettere la memoria massima consentita per i contenitori in esecuzione. Il valore predefinito è 512 MB.
  5. Fare clic su CONVALIDA e modificare le impostazioni secondo necessità.
  6. Fare clic su AGGIUNGI.

Le impostazioni vengono memorizzate nella cache. Dopo aver aggiunto l'integrazione, è possibile modificare le impostazioni, ad esempio il cluster o lo spazio dei nomi, ma potrebbero essere necessari fino a 5 minuti perché venga rilevata una modifica e affinché la CLI di Terraform venga eseguita con le nuove impostazioni.

Risoluzione dei problemi relativi al runtime di Terraform

Alcuni problemi di distribuzione della configurazione Terraform potrebbero essere correlati all'integrazione del runtime.

Problema Causa Risoluzione
La convalida non riesce e viene visualizzato un errore in chi si segnala che lo spazio dei nomi non è valido. È stato modificato il cluster, ma è stato lasciato lo spazio dei nomi precedente nell'interfaccia utente. Riselezionare sempre uno spazio dei nomi dopo aver modificato la selezione del cluster.
Il menu a discesa dello spazio dei nomi è vuoto o non elenca gli spazi dei nomi appena aggiunti. La raccolta dati per il cluster non è stata completata. La raccolta dati richiede fino a 5 minuti dopo l'immissione o la modifica del cluster e fino a 10 minuti durante l'immissione o la modifica dello spazio dei nomi. Per un nuovo cluster con spazi dei nomi esistenti, attendere fino a 5 minuti per il completamento della raccolta dati.

Per un nuovo spazio dei nomi in un cluster esistente, attendere fino a 10 minuti per il completamento della raccolta dati.

Se il problema persiste, rimuovere il cluster e aggiungerlo di nuovo in Infrastruttura > Risorse > Kubernetes.

I contenitori della CLI di Terraform vengono creati in un cluster precedente, in uno spazio dei nomi precedente o con le impostazioni di runtime precedenti, anche dopo l'aggiornamento dell'account di integrazione. Il client dell'API Kubernetes utilizzato da VMware Aria Automation viene memorizzato nella cache per 5 minuti. L'applicazione delle modifiche potrebbe richiedere fino a 5 minuti.
La convalida o un'operazione di distribuzione di Terraform non riesce e viene visualizzato un messaggio di errore che indica che kubeconfig non è disponibile. In alcuni casi questi errori si verificano perché il cluster non è raggiungibile da VMware Aria Automation.

In altri casi, le credenziali dell'utente, i token o i certificati non sono validi.

L'errore kubeconfig può verificarsi per una serie di motivi e potrebbe richiedere il coinvolgimento del supporto tecnico per la risoluzione dei problemi.

Come aggiungere supporto proxy

Per fare in modo che il cluster di runtime Kubernetes esterno si connetta tramite un server proxy, eseguire i passaggi seguenti.

  1. Accedere al server cluster Kubernetes esterno.
  2. Creare una cartella vuota.
  3. Nella nuova cartella, aggiungere le seguenti righe a un nuovo file denominato Dockerfile.
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. Modificare i valori dei segnaposto in modo che le variabili di ambiente https_proxy e http_proxy includano le impostazioni del server proxy utilizzate per accedere a Internet.

    protocol sarà http o https in base al protocollo utilizzato dal server proxy, che potrebbe non corrispondere al nome della variabile di ambiente https_proxy o http_proxy.

  5. Salvare e chiudere il file Dockerfile.
  6. Dalla cartella vuota, eseguire il comando seguente. In base ai privilegi dell'account, potrebbe essere necessario eseguire il comando in modalità sudo.

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    Il comando crea un'immagine Docker custom-terraform-runtime:1.0 locale.

  7. In Automation Assembler, sotto Infrastruttura > Connessioni > Integrazioni, passare all'integrazione del runtime Terraform.
  8. Creare o modificare le impostazioni del contenitore di runtime per utilizzare l'immagine custom-terraform-runtime:1.0:
    Immagine proxy runtime Terraform