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.
| 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 |
- Git, der beim Erstellen des Arbeitsbereichs definiert wurde.
- 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.