Schematics-Agenten zur Verwendung einer privaten Registry konfigurieren

Agenten unterstützen die Verwendung angepasster Terraform-Provider, die aus einer privaten Terraform-Registry mit Schematics-Terraform-Jobs stammen. Die Unterstützung für die Verwendung angepasster Provider ist im gemeinsam genutzten Multi-Tenant-Service Schematics nicht verfügbar. Sie ist nur mit Agenten verfügbar. Agenten enthalten keine lokale oder private Provider-Registry. Darüber hinaus können Benutzer die Registry im privaten Netz des Benutzers konfigurieren, auf das die Agenten zugreifen können.

Wenn Schematics-Jobs ausgeführt werden, lädt die Terraform-CLI standardmäßig die erforderlichen Terraform-Provider-Plug-ins oder Terraform-Module aus der öffentlichen Terraform-Registry über das Internet oder das öffentliche Netz herunter. Wenn ein Agent in einem privaten Netz implementiert wird, legen Sicherheitsrichtlinien fest, dass ein Proxy oder eine Spiegelsite zum Herunterladen und Caching von Provider-Plug-ins verwendet werden muss. Außerdem kann es wünschenswert sein, angepasste Terraform-Provider in einer privaten Registry zu hosten, um umgebungsspezifische Ressourcen zu konfigurieren.

Für diese Anwendungsfälle ermöglicht Terraform die Konfiguration des Provider-Downloads aus alternativen Provider-Registrys mithilfe eines provider_installation-Blocks in der Terraform-CLI-Konfiguration. Dies ermöglicht die Anpassung des Standardinstallationsverhaltens von Terraform. Weitere Details zum Konfigurieren des Provider-Downloads finden Sie in der Terraform-Dokumentation für die Providerinstallation.

Bei Agenten können die folgenden beiden Umgebungsvariablen für den Arbeitsbereich verwendet werden, um die Terraform-CLI so zu konfigurieren, dass sie auf ein alternatives Repository verweist, und Provider nach Name und Namensbereich aus dieser Registry auszuwählen.

  • Das private TF_NETWORK_MIRROR_URL Terraform-Repository, die Website oder die Artifactory-Instanz, in der angepasste Terraform-Provider gehostet werden.
  • Der TF_NETWORK_MIRROR_PROVIDER_NAME-Name und -Namespace des Providers, der von der angepassten Position heruntergeladen wird Informationen zur Providerbenennung und zu Namensbereichenfinden Sie in der Terraform-Dokumentation. Wenn nicht angegeben, werden standardmäßig alle Provider in allen Namensbereichen "*/*" aus der privaten Registry heruntergeladen.

Schematics generiert automatisch die folgenden Parameter der Terraform-CLI-Konfigurationsdatei. Während der Jobausführung kann Terraform die private Registry für einige angepasste Provider, die Sie verwenden möchten, oder für alle Provider verwenden.

provider_installation {
network_mirror {
url = "${TF_NETWORK_MIRROR_URL}"
include = ["${TF_NETWORK_MIRROR_PROVIDER_NAME}"]
}
direct {
exclude = ["TF_NETWORK_MIRROR_PROVIDER_NAME"]
}
}

Berechtigungsnachweise für den Zugriff auf eine private Provider-Registry festlegen

Für private Registrys muss Terraform mit den Zugriffstoken für die Zielregistry konfiguriert werden. In Agenten werden diese auf Arbeitsbereichsebene mithilfe der Umgebungsvariablen TF_TOKEN_ definiert. Weitere Informationen zum Konfigurieren der Übergabe von Berechtigungsnachweistoken finden Sie in der Terraform-Dokumentation Berechtigungsnachweise für Umgebungsvariablen.

Artifactory als Provider-Registry verwenden

Artifactory stellt eine alternative Lösung für das Sourcing von Terraform-Providern bereit und unterstützt das Terraform-Provider-Registry-Protokollvollständig. Es unterstützt ferne, lokale und virtuelle Repositorys, die die ersten beiden Typen mit einer definierten Suchreihenfolge zusammenfassen.

Lokale Repositorys sind physische, benutzerverwaltete lokale Repositorys. Die Repositorys fungieren als private Terraform-Registry, in der Sie angepasste Provider hosten und öffentliche Provider manuell hochladen und speichern können, um den Zugriff auf das öffentliche Netz zu vermeiden. Oder beschränken Sie die öffentlichen Provider, die Terraform-Benutzern zur Verfügung gestellt werden.

Ferne Repositorys können als Caching-Proxy für private Terraform-Registrys und für die öffentliche Terraform-Registry dienen. Für die Implementierung eines fernen Repositorys ist weiterhin ein öffentlicher Internetzugang erforderlich. Hier erfolgt der Zugriff auf das öffentliche Netz über Artifactory und nicht über Terraform. In der Regel verfügen viele Organisationen über vorhandene Artifactory-Installationen mit Netzüberwachungs-und Netzzugriffsregeln, die sicheren öffentlichen Zugriff über Artifactoryermöglichen.

Ein virtuelles Terraform-Repository, das ein lokales Repository mit einem fernen Proxy-Repository kombiniert, ermöglicht das lokale Hosting angepasster Provider sowie den sicheren Zugriff auf zusätzliche öffentliche Terraform-Provider.

Lokale Artifactory-Provider-Registry konfigurieren

Eine lokale Artifactory-Registry kann verwendet werden, um angepasste Provider für die Verwendung mit Agenten in einem privaten Netz eines Benutzers zu hosten. Der Artifactory-Zugriff wird mithilfe der folgenden Umgebungsvariablen für den Arbeitsbereich konfiguriert, um die Terraform-CLI so zu konfigurieren, dass sie auf das lokale Repository verweist, und Provider nach Name und Namensbereich aus dieser Registry auszuwählen.

TF_TOKEN_name.artifactory.user.com:<artifactory_local_registry_token> TF_NETWORK_MIRROR_PROVIDER_NAME:"user_namespace/provider_name" TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/

Die Werte für das Bearer-Token und URL der lokalen Registrierung finden Sie in der Dokumentation und der Benutzeroberfläche Artifactory.

Das folgende Beispiel zeigt, dass Schematics eine Terraform-CLI-Konfiguration generiert.

provider_installation {
                network_mirror {
                        url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-local/providers/"
                        include = ["user_namespace/provider_name"]
                }
                direct {
                        exclude = ["user_namespace/provider_name"]
                }
}  

Ferne Artifactory-Provider-Registry konfigurieren

Eine ferne Artifactory-Registry kann verwendet werden, um öffentliche Provider für die Verwendung durch Terraform zwischenzuspeichern, ohne dass der Zugriff auf das öffentliche Terraform-Netz erteilt wird. Der Zugriff auf Artifactory wird mithilfe der folgenden Umgebungsvariablen des Arbeitsbereichs konfiguriert, um die Terraform-CLI so zu konfigurieren, dass sie auf das ferne Repository verweist, und alle Provider mithilfe dieser Proxy-Registry abzurufen.

TF_TOKEN_name.artifactory.user.com:<artifactory_remote_registry_token> TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/

Beziehen Sie sich auf Artifactory und die Benutzeroberfläche, um die Werte für das Bearer-Token und URL der Remote-Registrierung zu ermitteln.

Das folgende Beispiel zeigt, dass Schematics eine Terraform-CLI-Konfiguration generiert.

provider_installation {
                network_mirror {
                        url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/"
                        include = ["*/*"]
                }
                direct {
                        exclude = ["*/*"]
                }
        }

Virtuelle Artifactory-Providerregistry konfigurieren

Eine virtuelle Artifactory-Registry kann verwendet werden, um das Hosting angepasster Provider mit dem Caching öffentlicher Provider für die Verwendung durch Terraform zu kombinieren. Der Zugriff auf Artifactory wird mithilfe der folgenden Umgebungsvariablen für den Arbeitsbereich konfiguriert, um die Terraform-CLI so zu konfigurieren, dass sie auf das virtuelle Repository verweist, und alle Provider mithilfe dieser Proxy-Registry abzurufen.

TF_TOKEN_name.artifactory.user.com:<artifactory_virtual_registry_token> TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com>/artifactory/api/terraform/<user-terraform-virtual/providers/

Die Werte für das Träger-Token und URL der virtuellen Registrierung finden Sie in Artifactory und der Benutzeroberfläche. Das virtuelle Repository muss wie in den vorherigen Abschnitten beschrieben als Aggregat einer lokalen und fernen Registry konfiguriert werden.

Das folgende Beispiel zeigt, dass Schematics eine Terraform-CLI-Konfiguration generiert.

provider_installation {
                network_mirror {
                        url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/"
                        include = ["*/*"]
                }
                direct {
                        exclude = ["*/*"]
                }
        }