Verwendung von Terraform-Vorlagen und -Modulen in den Repositories

Schematics und Terraform unterstützen das Herunterladen von Terraform-Vorlagen und -Modulen aus einer Vielzahl von Repository-Typen: Terraform Registry, GitHub, GitLab, S3/COS buckets, IBM Catalog, Artifactory usw. Siehe Modulquellen in der Terraform-Dokumentation.

Bei Verwendung von Schematicsist das Herunterladen von Terraform-Vorlagen und -Modulen vor der Ausführung einer Terraform-Plan-oder Apply-Operation ein zweistufiger Prozess. Beim Erstellen des Arbeitsbereichs klont Schematics nur das Repository, das Ihre Vorlage und alle eingebetteten Module in Unterordnern enthält. Module, auf die mit dem Parameter source verwiesen wird, werden bei der Erstellung des Arbeitsbereichs nicht heruntergeladen. Berechtigungsnachweise für den Zugriff auf die Vorlagen/Konfigurationen in privaten Repositorys müssen beim Erstellen des Arbeitsbereichs an Schematics übergeben werden.

Module, auf die mit dem Parameter source verwiesen wird, werden während der terraform init-Phase einer Plan-oder Anwendungsoperation heruntergeladen. Der Befehl terraform init analysiert die Vorlagendateien und lädt alle Module aus den Repositorys herunter, auf die das Feld source verweist. Für Module in privaten Repositorys müssen zusätzliche Berechtigungsnachweise an Terraform übergeben werden. Diese Berechtigungsnachweise werden separat definiert und an die Berechtigungsnachweise übergeben, die von Schematicsverwendet werden.

Zum Herunterladen von Modulen aus einem privaten Git-Repository, einem IBM Cloud-Katalog oder einem anderen Repository unterstützt Terraform die Verwendung einer netrc-Konfiguration zum Übergeben aller erforderlichen Zugriffs-IDs und Tokens.

Unterstützte Git-Repositorys
Repository
Vorlage
Öffentliches Repository
Vorlage
Privates Archiv
Modul
Öffentliches Repository
Modul
privates Repository
Kommentar
GitHub Ja Git-Token-1 Ja Git-Token-2
GitLab Ja Git-Token-1 Ja Git-Token-2
IBM GitLab Ja Git-Token-1 Ja Git-Token-2
Terraform.io Nein Nein Ja Nicht zutreffend
  1. Git, der beim Erstellen des Arbeitsbereichs definiert wurde.
  2. Git definiert durch Verwendung von netrc.

Wenn Sie Schematicsverwenden, kann die netrc-Unterstützung für Modulberechtigungsnachweise mithilfe der Umgebungsvariablen __netrc__ für die Übergabe von Berechtigungsnachweisen konfiguriert werden. Die Umgebungsvariable __netrc__ akzeptiert die Liste hostname, username und das Argument password. Die Einstellung von Umgebungsvariablen wird ausschließlich über die Schematics -Befehlszeile und APIs unterstützt. Die Syntax wird mit dem Parameter env_values in der JSON-Nutzdatendatei bereitgestellt.

Für __netrc__ müssen die Argumente hostname, username und password in derselben Reihenfolge wie in der Syntax aufgelistet angegeben werden.

Syntax von env_values mit __netrc__-Liste:

"env_values":[
            {
               "__netrc__":"[['example.com', 'user1', 'pass1']['example1.com', 'user2' , 'pass2']]"
            }
         ]

Private Module mit Vorlagen verwenden

Schematics erstellt die .netrc-Datei intern auf der Basis der in der JSON-Datei konfigurierten Umgebungsvariablen (env_values). Hier finden Sie eine Beispiel-Datei mit der Syntax und einem Beispiel für „ testexample.json “, mit der Sie alle Dateien klonen können, um die Arbeitsbereiche „ Schematics “ über die Befehlszeile und die API zu erstellen und anzuwenden.

Syntax mit Beschreibung:

{
  "name": "<workspace_name>",
  "shared_data": {
    "region": "<region_name>"
  },
  "type": [
    "<terraform_version>"
  ],
  "description": "<description of the workspace>",
  "template_repo": {
    "url": "<your Git repository with the module>"
  },
  "template_data": [
    {
      "folder": ".",
      "type": "<terraform_version>",
      "env_values": [
        {
          "__netrc__":"[['<git repository>','<git username>','<git_password>']]"
        }
      ]
    }
  ]
}

Beispiel testexample.json mit netrc-Nutzdaten

{
  "name": "testnetrcworkspaceexample",
  "shared_data": {
    "region": "us-south"
  },
  "type": [
    "terraform_v1.4"
  ],
  "description": "terraform workspace",
  "template_repo": {
    "url": "https://github.com/xxxx/test-template-private-module"
  },
  "template_data": [
    {
      "folder": ".",
      "type": "terraform_v1.4",
      "env_values": [
        {
          "__netrc__":"[['github.com','testuser','ghp_x0000000xxxxxxxx000000efZxxxxxxxV']]"
        }
      ]
    }
  ]
}

Beispiel für die Erstellung eines Arbeitsbereichs

ibmcloud schematics workspace new --file testexample.json

Führen Sie den Befehl ibmcloud schematics workspace get --id WORKSPACE_ID aus, um die erfolgreiche Erstellung des Arbeitsbereichs zu analysieren oder verwenden Sie die Benutzerschnittstelle, um alle Dateien aus den Modulen anzuzeigen, die geklont und in Ihrem Arbeitsbereich für die Bereitstellung verwendet werden.