IBM Cloud Docs
Utilización de plantillas y módulos Terraform en los repositorios

Utilización de plantillas y módulos Terraform en los repositorios

Schematics y Terraform soportan la descarga de plantillas y módulos Terraform desde una variedad de tipos de repositorios: Terraform Registry, GitHub, GitLab, S3/COS buckets, IBM Catalog, Artifactory etcétera. Consulte Orígenes de módulo en la documentación de Terraform.

Cuando se utiliza Schematics, la descarga de plantillas y módulos de Terraform antes de realizar una operación de plan o aplicación de Terraform es un proceso de dos pasos. Durante la creación del espacio de trabajo, Schematics clona sólo el repositorio que contiene la plantilla y los módulos incorporados en las subcarpetas. Los módulos a los que se hace referencia utilizando el parámetro source del módulo no se descargan durante la creación del espacio de trabajo. Las credenciales para acceder a las plantillas/configuraciones en repositorios privados, se deben pasar a Schematics en el momento de crear el espacio de trabajo.

Los módulos a los que se hace referencia con el parámetro source se descargan durante la fase terraform init de un plan o operación de aplicación. El mandato terraform init analiza los archivos de plantilla y descarga los módulos de los repositorios a los que hace referencia el campo source. Los módulos que residen en repositorios privados requieren que se pasen credenciales adicionales a Terraform. Estas credenciales se definen y se pasan por separado a las utilizadas por Schematics.

Para descargar módulos desde un repositorio Git privado, un catálogo IBM Cloud o cualquier otro repositorio, Terraform admite el uso de una configuración de netrc para pasar los ID de acceso y señales necesarios.

Repositorios de Git soportados
Repositorio
Plantilla
Repositorio público
Plantilla
Repositorio privado
Módulo
Repositorio público
Módulo
repositorio privado
Comentario
GitHub Señal Git-1 Señal Git-2
GitLab Señal Git-1 Señal Git-2
IBM GitLab Señal Git-1 Señal Git-2
Terraform.io No No N/D
  1. Token Git definido en el momento de crear el espacio de trabajo.
  2. Token Git definido mediante netrc.

Cuando se utiliza Schematics, el soporte de netrc para credenciales de módulo se puede configurar utilizando la variable de entorno __netrc__ para pasar credenciales. La variable de entorno __netrc__ acepta la lista de hostname, username y el argumento password. El valor de las variables de entorno solo está soportado utilizando la línea de mandatos de Schematics y APIs. La sintaxis se proporciona utilizando el parámetro env_values en el archivo de carga útil JSON.

El __netrc__ espera el argumento hostname,username y password en el mismo orden que se listan en la sintaxis.

Sintaxis de env_values con la lista de __netrc__:

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

Utilización de módulos privados con plantillas

Schematics crea internamente el archivo .netrc basado en env_values configurado en el archivo JSON. Aquí hay una sintaxis y muestra testexample.json archivo de ejemplo para clonar todos los archivos para crear y aplicar el Schematics espacios de trabajo a través de línea de comandos y API.

Sintaxis con la descripción:

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

Ejemplo de testexample.json con carga útil de 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']]"
        }
      ]
    }
  ]
}

Ejemplo para crear espacio de trabajo

ibmcloud schematics workspace new --file testexample.json

Ejecute el mandato ibmcloud schematics workspace get --id WORKSPACE_ID para analizar la creación del espacio de trabajo satisfactoria o utilizar la interfaz de usuario para ver que todos los archivos de los módulos se clonan y se utilizan en el espacio de trabajo a suministrar.