Uso de modelos e módulos do Terraform nos repositórios
Schematics e o Terraform suportam o download de modelos e módulos do Terraform a partir de uma variedade de tipos de repositórios: Registro do Terraform, GitHub, GitLab, S3/COS buckets, IBM Catalog, Artifactory e assim por diante. Consulte Origens do módulo na documentação do Terraform
Ao usar Schematics, o download de modelos e módulos do Terraform antes de executar uma operação do Terraform Plan ou Apply é um processo de duas etapas. Na hora da criação da área de trabalho, o Schematics clona apenas o repositório que contém
seu modelo e quaisquer módulos integrados em subpastas. Quaisquer módulos referenciados usando o parâmetro source do módulo não são transferidos por download no momento da criação da área de trabalho. As credenciais para acessar
os modelos / configurações em repositórios privados devem ser transmitidas para Schematics no momento da criação da área de trabalho.
Os módulos referenciados com o parâmetro source são transferidos por download durante a fase terraform init de uma operação de plano ou de aplicação. O comando terraform init analisa os arquivos de modelo
e faz download de quaisquer módulos dos repositórios referenciados pelo campo source. Os módulos que residem em repositórios privados requerem que credenciais adicionais sejam transmitidas para o Terraform Essas credenciais são
definidas e transmitidas separadamente para aquelas usadas pelo Schematics.
Para fazer download de módulos de um repositório Git privado, um catálogo do IBM Cloud ou qualquer outro repositório, o Terraform suporta o uso de uma configuração do netrc para transmitir quaisquer IDs de acesso e tokens necessários.
| Repositório |
Modelo Repo público |
Modelo Repositório privado |
Módulo Repositório público |
Módulo repositório privado |
Comentário |
|---|---|---|---|---|---|
| GitHub | True | Token Git-1 | True | Token Git-2 | |
| GitLab | True | Token Git-1 | True | Token Git-2 | |
| IBM GitLab | True | Token Git-1 | True | Token Git-2 | |
| Terraform.io | Não | Não | True | N/D |
- Token Git definido no momento da criação do espaço de trabalho.
- Token Git definido pelo uso de
netrc.
Ao usar Schematics, o suporte netrc para credenciais de módulo pode ser configurado usando a variável de ambiente __netrc__ para as credenciais de passagem. A variável de ambiente __netrc__ aceita a lista
de hostname, username e o argumento password. A configuração de variáveis de ambiente é suportada apenas usando a linha de comandos Schematics
e APIs. A sintaxe é fornecida usando o parâmetro env_values no arquivo de carga útil JSON..
O __netrc__ espera hostname, username e o argumento password na mesma ordem que estão listados na sintaxe.
Sintaxe de env_values com lista de __netrc__:
"env_values":[
{
"__netrc__":"[['example.com', 'user1', 'pass1']['example1.com', 'user2' , 'pass2']]"
}
]
Usando módulos privados com modelos
O Schematics cria internamente o arquivo .netrc com base no env_values configurado no arquivo JSON. Aqui está a sintaxe e um arquivo de exemplo do testexample.json para clonar todos os arquivos
necessários à criação e aplicação dos espaços de trabalho do Schematics por meio da linha de comando e da API.
Sintaxe com a descrição:
{
"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>']]"
}
]
}
]
}
Exemplo testexample.json com carga útil 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']]"
}
]
}
]
}
Exemplo para criar área de trabalho
ibmcloud schematics workspace new --file testexample.json
Execute o comando ibmcloud schematics workspace get --id WORKSPACE_ID para analisar a interface com o usuário da criação ou do uso com êxito da área de trabalho, para visualizar todos
os arquivos dos módulos que são clonados e usados em sua área de trabalho para provisão.