Gli utenti di vRealize Automation Cloud Assembly che devono progettare ed eseguire integrazioni di Terraform mentre sono disconnessi da Internet possono configurare il proprio ambiente di runtime seguendo questo esempio.

Nota: È necessario connettersi temporaneamente a Internet durante la configurazione.

Questo processo presuppone che l'utente disponga del proprio registro Docker e possa accedere ai repository senza connessione Internet.

Creazione dell'immagine del contenitore personalizzata

  1. Creare un'immagine del contenitore personalizzata che includa i file binari dei plug-in del provider Terraform.

    Il Dockerfile seguente illustra un esempio di creazione di un'immagine personalizzata con il provider GCP di Terraform.

    Il download dell'immagine di base projects.registry.vmware.com/vra/terraform:latest nel Dockerfile richiede l'accesso temporaneo a Internet per poter raggiungere il registro VMware Harbor disponibile all'indirizzo projects.registry.vmware.com.

    Le impostazioni del firewall o le impostazioni del proxy possono causare errori nella creazione dell'immagine. Potrebbe essere necessario abilitare l'accesso temporaneo a releases.hashicorp.com per scaricare i file binari dei plug- del provider Terraform. Tuttavia, è possibile utilizzare il proprio registro privato per fornire i file binari dei plug-in come opzione.

    FROM projects.registry.vmware.com/vra/terraform:latest as final
     
    # Create provider plug-in directory
    ARG plugins=/tmp/terraform.d/plugin-cache/linux_amd64
    RUN mkdir -m 777 -p $plugins
      
    # Download and unzip all required provider plug-ins from hashicorp to provider directory
    RUN cd $plugins \
        && wget -q https://releases.hashicorp.com/terraform-provider-google/3.58.0/terraform-provider-google_3.58.0_linux_amd64.zip \
        && unzip *.zip \
        && rm *.zip
      
    # For "terraform init" configure terraform CLI to use provider plug-in directory and not download from internet
    ENV TF_CLI_ARGS_init="-plugin-dir=$plugins -get-plugins=false"
  2. Creare, contrassegnare ed eseguire il push dell'immagine del contenitore personalizzata nel proprio repository Docker.
  3. In vRealize Automation Cloud Assembly, sotto Infrastruttura > Connessioni > Integrazioni, passare all'integrazione del runtime Terraform.
  4. Creare o modificare le impostazioni del contenitore di runtime per aggiungere il repository per l'immagine del contenitore personalizzata. Il nome dell'immagine del contenitore personalizzata di esempio è registry.ourcompany.com/project1/image1:latest.
    Immagine del contenitore Terraform

Hosting locale della CLI di Terraform

  1. Scaricare i file binari della CLI di Terraform.
  2. Caricare i file binari della CLI di Terraform nel server Web locale.
  3. In vRealize Automation Cloud Assembly, passare a Infrastruttura > Configura > Versioni Terraform.
  4. Creare o modificare la versione di Terraform in modo che includa l'URL dei file binari della CLI di Terraform ospitati nel server Web locale.
    URL della CLI Terraform

Progettazione e distribuzione delle configurazioni di Terraform

Con il runtime in esecuzione, è possibile aggiungere file di configurazione di Terraform a git, progettare modelli cloud per tali file ed eseguire la distribuzione.

Per iniziare, vedere Preparazione delle configurazioni Terraform in vRealize Automation Cloud Assembly.

Risoluzione dei problemi

Durante la distribuzione, aprire la distribuzione in vRealize Automation Cloud Assembly. Nella scheda Cronologia, cercare gli eventi di Terraform e fare clic su Mostra registri a destra. Quando il provider Terraform locale funziona, nel registro vengono visualizzati i seguenti messaggi.

Initializing provider plugins

Terraform has been successfully initialized

Per un registro più affidabile, è possibile modificare manualmente il codice del modello cloud per aggiungere TF_LOG: DEBUG come illustrato nell'esempio seguente.

resources:
  terraform:
    type: Cloud.Terraform.Configuration
    properties:
      providers:
        - name: google
          # List of available cloud zones: gcp/us-west1
          cloudZone: gcp/us-west1
      environment:
        # Configure terraform CLI debug log settings
        TF_LOG: DEBUG
      terraformVersion: 0.12.29
      configurationSource:
        repositoryId: fc569ef7-f013-4489-9673-6909a2791071
        commitId: 3e00279a843a6711f7857929144164ef399c7421
        sourceDirectory: gcp-simple