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. 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.