Utilisation de modèles et de modules Terraform dans les référentiels
Schematics et Terraform prennent en charge le téléchargement de modèles et de modules Terraform à partir de divers types de référentiels : Terraform Registry, GitHub, GitLab, S3/COS buckets, IBM Catalog, Artifactory etc. Voir Sources de module dans la documentation Terraform.
Lors de l'utilisation de Schematics, le téléchargement de modèles et de modules Terraform avant d'effectuer une opération de plan Terraform ou d'application est un processus en deux étapes. Lors de la création de l'espace de travail, Schematics
clone uniquement le référentiel contenant votre modèle et les modules imbriqués dans les sous-dossiers. Les modules référencés à l'aide du paramètre source du module ne sont pas téléchargés lors de la création de l'espace de travail.
Les données d'identification permettant d'accéder aux modèles / configurations dans les référentiels privés doivent être transmises à Schematics lors de la création de l'espace de travail.
Les modules référencés avec le paramètre source sont téléchargés lors de la phase terraform init d'un plan ou d'une opération d'application. La commande terraform init analyse les fichiers modèles et télécharge
les modules à partir des référentiels référencés par la zone source. Les modules résidant dans des référentiels privés nécessitent des données d'identification supplémentaires pour être transmises à Terraform. Ces données d'identification
sont définies et transmises séparément à celles utilisées par Schematics.
Pour télécharger des modules à partir d'un référentiel Git privé, d'un catalogue IBM Cloud ou de tout autre référentiel, Terraform prend en charge l'utilisation d'une configuration netrc pour transmettre les ID et les jetons d'accès requis.
| Référentiel |
Modèle de référentiel public |
Modèle Dépôt privé |
Module Dépôt public |
Module dépôt privé |
Commentaire |
|---|---|---|---|---|---|
| GitHub | Oui | Jeton Git-1 | Oui | Jeton Git-2 | |
| GitLab | Oui | Jeton Git-1 | Oui | Jeton Git-2 | |
| IBM GitLab | Oui | Jeton Git-1 | Oui | Jeton Git-2 | |
| Terraform.io | Non | Non | Oui | ND |
- Jeton Git défini lors de la création de l'espace de travail.
- Jeton Git défini à l'aide de
netrc.
Lors de l'utilisation de Schematics, la prise en charge netrc des données d'identification de module peut être configurée à l'aide de la variable d'environnement __netrc__ pour transmettre les données d'identification.
La variable d'environnement __netrc__ accepte la liste des hostname, username et l'argument password. La définition des variables d'environnement est prise en charge uniquement à l'aide de
la ligne de commande Schematics
et de APIs. La syntaxe est fournie à l'aide du paramètre env_values dans le fichier de contenu JSON.
Le __netrc__attendshostname, username, et l'argument password dans le même ordre que ceux répertoriés dans la syntaxe.
Syntaxe de env_values avec la liste de __netrc__:
"env_values":[
{
"__netrc__":"[['example.com', 'user1', 'pass1']['example1.com', 'user2' , 'pass2']]"
}
]
Utilisation de modules privés avec des modèles
Schematics crée en interne le fichier .netrcbasé sur le fichier env_values configuré dans le fichier JSON. Voici un fichier d'exemple illustrant la syntaxe et l' testexample.json, permettant de cloner tous
les fichiers nécessaires à la création et à l'application des espaces de travail « Schematics » via la ligne de commande et l'API.
Syntaxe avec la description :
{
"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>']]"
}
]
}
]
}
Exemple de fichier testexample.json avec le contenu netrc
{
"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']]"
}
]
}
]
}
Exemple de création d'un espace de travail
ibmcloud schematics workspace new --file testexample.json
Exécutez la commande ibmcloud schematics workspace get --id WORKSPACE_IDpour analyser la création de l'espace de travail de réussite ou l'utilisation de Interface utilisateurpour afficher
tous les fichiers des modules clonés et utilisés dans votre espace de travail pour les fournir.