vRealize Automation Cloud Assembly-gebruikers die Terraform-integraties moeten ontwerpen en uitvoeren indien niet verbonden met internet, kunnen hun runtime-omgeving instellen door dit voorbeeld te volgen.

Opmerking: U moet tijdens het instellen tijdelijk verbinding maken met internet.

Bij dit proces wordt ervan uitgegaan dat u uw eigen Docker-register hebt en dat u zonder internetverbinding toegang hebt tot de opslagplaatsen.

De aangepaste containerimage maken

  1. Maak een aangepaste containerimage die de binaire bestanden van de Terraform-providerinvoegtoepassing bevat.

    In het volgende Docker-bestand ziet u een voorbeeld van het maken van een aangepaste image met de Terraform GCP-provider.

    Voor de download van de basisimage projects.registry.vmware.com/vra/terraform:latest in het Docker-bestand is tijdelijke internettoegang vereist tot het VMware Harbor-register op projects.registry.vmware.com.

    Firewallinstellingen of proxyinstellingen kunnen ertoe leiden dat de imagebuild mislukt. Mogelijk hebt u tijdelijke toegang nodig tot releases.hashicorp.com om de binaire bestanden van de Terraform-providerinvoegtoepassing te downloaden. U kunt echter uw privéregister gebruiken om de binaire bestanden van de invoegtoepassing als optie te leveren.

    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. Bouw, tag en push de aangepaste containerimage naar uw eigen Docker-opslagplaats.
  3. Ga in vRealize Automation Cloud Assembly onder Infrastructuur > Verbindingen > Integraties naar uw Terraform-runtime-integratie.
  4. Maak of bewerk de runtimecontainerinstellingen om uw opslagplaats toe te voegen voor de aangepaste containerimage. De naam van het voorbeeld van de ingebouwde aangepaste containerimage is registry.ourcompany.com/project1/image1:latest.
    Terraform-containerimage

De Terraform CLI lokaal hosten

  1. Download de binaire bestanden voor de Terraform CLI.
  2. Upload de binaire bestanden voor de Terraform CLI naar uw lokale webserver of FTP-server.
  3. Ga in vRealize Automation Cloud Assembly naar Infrastructuur > Configureren > Terraform-versies.
  4. Maak of bewerk de Terraform-versie zodat deze de URL naar de binaire bestanden voor de Terraform CLI bevat die op uw lokale server worden gehost.
  5. Als voor uw lokale web- of FTP-server aanmeldingsverificatie is vereist, selecteert u Basisverificatie en voert u de verificatiegegevens voor gebruikersnaam en wachtwoord in die toegang geven tot de server.

    Als u het verificatietype wilt wijzigen, moet u de rol van cloudbeheerder in vRealize Automation Cloud Assembly hebben.

    URL van Terraform CLI

Terraform-configuraties ontwerpen en implementeren

Als de runtime is geïmplementeerd, kunt u Terraform-configuratiebestanden aan git toevoegen, cloudsjablonen voor die bestanden ontwerpen en implementeren.

Zie Terraform-configuraties in vRealize Automation Cloud Assembly voorbereiden om aan de slag te gaan.

Problemen oplossen

Open de implementatie in vRealize Automation Cloud Assembly tijdens het implementeren. Zoek op het tabblad Geschiedenis naar Terraform-gebeurtenissen en klik op Logboeken weergeven aan de rechterkant. Wanneer uw lokale Terraform-provider werkt, worden de volgende berichten in het logboek weergegeven.

Initializing provider plugins

Terraform has been successfully initialized

Voor een meer robuust logboek kunt u de cloudsjablooncode handmatig bewerken om TF_LOG: DEBUG toe te voegen, zoals in het volgende voorbeeld wordt weergegeven.

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