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: Voor het verkrijgen van een bron voor het maken van images moet voor de setup kort verbinding worden gemaakt met internet. Mogelijk moet u deze stappen buiten uw niet-verbonden site uitvoeren als een tijdelijke verbinding niet mogelijk is.

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 internettoegang vereist tot het VMware Harbor-register op projects.registry.vmware.com.

    Firewallinstellingen of proxyinstellingen kunnen ertoe leiden dat de imagebuild mislukt. Mogelijk heeft u 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 op uw locatie zonder verbinding.
  3. Ga in Cloud Assembly op uw locatie zonder verbinding 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 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 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 Cloud Assembly voorbereiden om aan de slag te gaan.

Problemen oplossen

Open de implementatie in 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

Uw eigen basisimage maken

Hoewel VMware de basisimage bij projects.registry.vmware.com/vra/terraform:latest af en toe bijwerkt, kan die image verouderd zijn en kwetsbaarheden bevatten.

Als u uw eigen basisimage wilt bouwen, gebruikt u in plaats daarvan het volgende Docker-bestand.

FROM alpine:latest as final
RUN apk add --no-cache git wget curl openssh