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.
| Repositorio |
Plantilla Repositorio público |
Plantilla Repositorio privado |
Módulo Repositorio público |
Módulo repositorio privado |
Comentario |
|---|---|---|---|---|---|
| GitHub | Sí | Señal Git-1 | Sí | Señal Git-2 | |
| GitLab | Sí | Señal Git-1 | Sí | Señal Git-2 | |
| IBM GitLab | Sí | Señal Git-1 | Sí | Señal Git-2 | |
| Terraform.io | No | No | Sí | N/D |
- Token Git definido en el momento de crear el espacio de trabajo.
- 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. A continuación se muestra la sintaxis y un archivo de ejemplo de testexample.json para clonar todos los
archivos necesarios para crear y aplicar los espacios de trabajo de Schematics mediante comando y la 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.