Cloud Assembly-Benutzer, die Terraform-Integrationen entwerfen und ausführen müssen, während sie keinen Internetzugriff haben, können ihre Laufzeitumgebung einrichten, indem sie dem nachstehenden Beispiel folgen.
Bei diesem Vorgang wird davon ausgegangen, dass Sie über Ihre eigene Docker-Registrierung verfügen und über eine Internetverbindung auf deren Repositorys zugreifen können.
Erstellen des benutzerdefinierten Container-Images
- Erstellen Sie ein benutzerdefiniertes Container-Image, das die Binärdateien des Terraform-Anbieter-Plug-Ins enthält.
In der folgenden Datei „Dockerfile“ ist ein Beispiel für die Erstellung eines benutzerdefinierten Images mit dem GCP-Anbieter für Terraform zu sehen.
Das Herunterladen des Basisimages
projects.registry.vmware.com/vra/terraform:latest
in die Datei „Dockerfile“ erfordert Internetzugriff auf die VMware Harbor-Registrierung unter „projects.registry.vmware.com“.Firewall- oder Proxy-Einstellungen können dazu führen, dass der Image-Build fehlschlägt. Möglicherweise müssen Sie Zugriff auf „releases.hashicorp.com“ aktivieren, um die Binärdateien des Terraform-Anbieter-Plug-Ins herunterzuladen. Sie können jedoch optional Ihre private Registrierung verwenden, um die Plug-In-Binärdateien zur Verfügung zu stellen.
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"
- Erstellen, taggen und übertragen Sie das benutzerdefinierte Container-Image in Ihr eigenes Docker-Repository auf der getrennten Site.
- Wechseln Sie in Cloud Assembly auf der getrennten Site unter zu Ihrer Terraform-Laufzeitintegration.
- Erstellen oder bearbeiten Sie die Laufzeit-Containereinstellungen, um Ihr Repository für das benutzerdefinierte Container-Image hinzuzufügen. Der Name des beispielhaft erstellten benutzerdefinierten Container-Images lautet
registry.ourcompany.com/project1/image1:latest
.
Lokales Hosten der Terraform-CLI
- Laden Sie die Terraform-CLI-Binärdateien herunter.
- Laden Sie die Terraform-CLI-Binärdateien auf Ihren lokalen Web- oder FTP-Server hoch.
- Wechseln Sie in Cloud Assembly zu .
- Erstellen oder bearbeiten Sie die Terraform-Version so, dass sie die URL zu den Terraform-CLI-Binärdateien enthält, die auf Ihrem lokalen Server gehostet werden.
- Wenn für den lokalen Web- oder FTP-Server eine Anmeldeauthentifizierung erforderlich ist, wählen Sie Standardauthentifizierung aus und geben Sie die Anmeldedaten (Benutzername und Kennwort) für den Zugriff auf den Server ein.
Zum Ändern des Authentifizierungstyps müssen Sie über die Cloud-Administratorrolle in Cloud Assembly verfügen.
Entwerfen und Bereitstellen von Terraform-Konfigurationen
Sobald die Laufzeit vorhanden ist, können Sie Terraform-Konfigurationsdateien in Git hinzufügen, Cloud-Vorlagen für sie entwerfen und Bereitstellungen vornehmen.
Informationen zu den ersten Schritten finden Sie unter Vorbereiten auf Terraform-Konfigurationen in Cloud Assembly.
Fehlerbehebung
Öffnen Sie beim Bereitstellen die Bereitstellung in Cloud Assembly. Suchen Sie auf der Registerkarte „Verlauf“ nach Terraform-Ereignissen und klicken Sie rechts auf Protokolle anzeigen. Wenn Ihr lokaler Terraform-Anbieter funktioniert, werden die folgenden Meldungen im Protokoll angezeigt.
Initializing provider plugins
Terraform has been successfully initialized
Für ein robusteres Protokoll können Sie den Code der Cloud-Vorlage manuell bearbeiten und TF_LOG: DEBUG
hinzufügen, wie im folgenden Beispiel gezeigt.
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
Erstellen eines eigenen Basisimages
Obwohl VMware das Basisimage gelegentlich unter projects.registry.vmware.com/vra/terraform:latest
aktualisiert, ist dieses Image möglicherweise veraltet und enthält Schwachstellen.
Verwenden Sie stattdessen die folgende Dockerfile-Datei, um Ihr eigenes Basisimage zu erstellen.
FROM alpine:latest as final RUN apk add --no-cache git wget curl openssh