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érentiels Git pris en charge
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
  1. Jeton Git défini lors de la création de l'espace de travail.
  2. 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.