Utilizzo di modelli e moduli Terraform nei repository

Schematics e Terraform supportano il download di modelli e moduli Terraform da diversi tipi di repository: Registro Terraform, GitHub, GitLab, S3/COS bucket, IBM Catalog, Artifactory e così via. Vedi Module Sources nella documentazione di Terraform.

Quando utilizzi Schematics, il download di modelli e moduli Terraform prima di eseguire un'operazione di piano Terraform o di applicazione è un processo in due fasi. Al momento della creazione dello spazio di lavoro, Schematics clona solo il repository contenente il tuo template e tutti i moduli incorporati nelle sottocartelle. Tutti i moduli a cui si fa riferimento utilizzando il parametro source del modulo non vengono scaricati al momento della creazione del spazio di lavoro. Le credenziali per accedere ai modelli / alle configurazioni nei repository privati devono essere passate a Schematics al momento della creazione dello spazio di lavoro.

I moduli a cui si fa riferimento con il parametro source vengono scaricati durante la fase terraform init di un piano o di un'operazione di applicazione. Il comando terraform init analizza i file di modello e scarica i moduli dai repository a cui fa riferimento il campo source. I moduli che risiedono in repository privati richiedono credenziali aggiuntive da passare a Terraform. Queste credenziali vengono definite e passate separatamente a quelle utilizzate da Schematics.

Per scaricare i moduli da un repository Git privato, un catalogo IBM Cloud o qualsiasi altro repository, Terraform supporta l'utilizzo di una configurazione netrc per passare i token e gli ID di accesso richiesti.

Repository Git supportati
Repository
Repository
pubblico template
Template
Repository privato
Modulo
Repository pubblico
Modulo
repository privato
Commento
GitHub Token Git- 1 Token Git- 2
GitLab Token Git- 1 Token Git- 2
IBM GitLab Token Git- 1 Token Git- 2
Terraform.io No No NA
  1. Git token definito al momento della creazione dell'area di lavoro.
  2. Git token definito utilizzando netrc.

Quando si utilizzano Schematics, il supporto netrc per le credenziali del modulo può essere configurato utilizzando la variabile di ambiente __netrc__ per le credenziali di passaggio. La variabile di ambiente __netrc__ accetta l'elenco di hostname, username e l'argomento password. L'impostazione delle variabili di ambiente è supportata solo utilizzando la riga di comando Schematics e APIs. La sintassi viene fornita utilizzando il parametro env_values nel file di payload JSON.

L'argomento __netrc__ prevede hostname, username e password nello stesso ordine elencato nella sintassi.

Sintassi di env_values con elenco di __netrc__

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

Utilizzo di moduli privati con modelli

Schematics crea internamente un file .netrc basato su env_values configurato nel file JSON. Ecco un file di esempio testexample.json di sintassi e di esempio per clonare tutti i file per creare e applicare gli spazi di lavoro Schematics tramite riga di comando e API.

Sintassi con la descrizione:

{
  "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>']]"
        }
      ]
    }
  ]
}

Esempio testexample.json con payload 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']]"
        }
      ]
    }
  ]
}

Esempio per creare uno spazio di lavoro

ibmcloud schematics workspace new --file testexample.json

Eseguire il comando ibmcloud schematics workspace get --id WORKSPACE_ID per analizzare la creazione corretta dello spazio di lavoro o utilizzare l'interfaccia utente per visualizzare tutti i file dai moduli clonati e utilizzati nello spazio di lavoro per il provisioning.