I progetti che includono configurazioni Terraform richiedono l'accesso a un ambiente di runtime di Terraform che viene integrato con il prodotto Cloud Assembly 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 vRealize 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.

  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 vRealize Automation.

      In Cloud Assembly, passare a Infrastruttura > Risorse > Kubernetes e verificare di disporre di un cluster Kubernetes. Vedere Come si utilizza Kubernetes in Cloud Assembly 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 vRealize 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 vRealize 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 su /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 vRealize 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 vRealize 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 Cloud Assembly, 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