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órios Git suportados
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
  1. Token Git definido no momento da criação do espaço de trabalho.
  2. 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.