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 |
Repository pubblico template |
Template Repository privato |
Modulo Repository pubblico |
Modulo repository privato |
Commento |
|---|---|---|---|---|---|
| GitHub | Sì | Token Git- 1 | Sì | Token Git- 2 | |
| GitLab | Sì | Token Git- 1 | Sì | Token Git- 2 | |
| IBM GitLab | Sì | Token Git- 1 | Sì | Token Git- 2 | |
| Terraform.io | No | No | Sì | NA |
- Git token definito al momento della creazione dell'area di lavoro.
- 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.