Gli utenti di 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.
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
- 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 a Internet per poter raggiungere il registro VMware Harbor in 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 a releases.hashicorp.com per scaricare i file binari dei plug-in 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"
- Creare, contrassegnare ed eseguire il push dell'immagine del contenitore personalizzata nel repository Docker nel sito disconnesso.
- In Cloud Assembly, nel sito disconnesso, in , passare all'integrazione del runtime Terraform.
- 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
.
Hosting locale della CLI di Terraform
- Scaricare i file binari della CLI di Terraform.
- Caricare i file binari della CLI di Terraform nel server FTP o Web locale.
- In Cloud Assembly, passare a .
- Creare o modificare la versione di Terraform in modo che includa l'URL dei file binari della CLI di Terraform ospitati nel server locale.
- Se il server FTP o Web locale richiede l'autenticazione di accesso, selezionare Autenticazione di base e immettere il nome utente e la password che possono accedere al server.
Per modificare il tipo di autenticazione, è necessario disporre del ruolo di amministratore del cloud in Cloud Assembly.
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 Cloud Assembly.
Risoluzione dei problemi
Durante la distribuzione, aprire la distribuzione in 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
Creazione della propria immagine di base
Nonostante VMware aggiorni l'immagine di base in projects.registry.vmware.com/vra/terraform:latest
, tale immagine potrebbe essere obsoleta e contenere vulnerabilità.
Per creare la propria immagine di base, utilizzare invece il Dockerfile seguente.
FROM alpine:latest as final RUN apk add --no-cache git wget curl openssh