Conducto de integración continua para infraestructura como código
El proceso de integración continua para Infraestructura como Código ( IaC ) crea la configuración implementable a partir de los IaC repositorios (contenido de Terraform).
Antes de crear artefactos, la interconexión comprueba que el código se haya explorado y probado, de la misma forma que se procesan las solicitudes de extracción. Los artefactos creados también se analizan en busca de vulnerabilidades y se firman en la canalización antes de marcarlos como listos para su publicación y despliegue en el inventario. Para obtener más información, consulte Inventario. A diferencia de la interconexión de la solicitud de extracción, la interconexión de integración continua recopila pruebas y artefactos de resultados en cada etapa de la compilación como, por ejemplo, pruebas, exploraciones y firmas. Estos datos se correlacionan con los artefactos creados y se pueden rastrear a través del proceso de despliegue y la gestión de cambios.
Etapas y tareas
| Tarea o etapa | Descripción breve | Personalizable en .pipeline-config.yaml |
|---|---|---|
start |
Configura el entorno de la tubería. | No |
setup |
Configura tu entorno de compilación y pruebas. | Sí |
test |
Ejecuta pruebas de unidad en la configuración, IaC. | Sí |
static-scan |
Ejecuta el código de escaneo estático en IaC. | Sí |
compliance-checks |
Ejecuta exploraciones de Code Risk Analyzer y otras comprobaciones de conformidad en repositorios de aplicaciones. | Sí |
build-artifact |
Crea los artefactos correspondientes a la configuración. | Sí |
sign-artifact |
Firma los artefactos compilados. | Sí |
deploy |
Despliega la configuración, utilizando los artefactos compilados, en el entorno de desarrollo. | Sí |
acceptance-test |
Ejecuta pruebas de aceptación e integración en la configuración desplegada en el entorno de desarrollo. | Sí |
release |
Añade los artefactos construidos al inventario. | Sí |
finish |
Recoge, crea y carga los archivos de registro, artefactos y pruebas en el armario de pruebas. | No |
Para obtener más información sobre cómo personalizar las etapas mediante el archivo .pipeline-config.yaml, consulte Scripts personalizados. e)
y Parámetros de interconexión.
Parámetros para configurar el contexto y las variables de Terraform
Para las definiciones de Terraform que definen el origen de infraestructura como código, el contexto y las variables relacionadas con la exploración y las comprobaciones relacionadas con Terraform y Terraform se pueden definir utilizando los parámetros que se describen en la Tabla 1.
| Propiedad | Valor predeterminado | Descripción |
|---|---|---|
tf-dir |
. |
Ubicación o vía de acceso en el repositorio de origen donde se encuentra main.tf. |
TF_VAR_<XXXX> |
Propiedad de interconexión o desencadenante (protegido o no protegido) que proporciona el valor para la variable de Terraform <XXXX> |
|
tfvars-repository |
Repositorio Git de código fuente de infraestructura. | Repositorio Git que contiene archivos tfavars. El repositorio debe declararse en la cadena de herramientas. |
tfvars-branch |
main |
Rama del repositorio Git que contiene los archivos tfvars. |
tfvars-files |
Archivos que contienen valores de variables de Terraform. | |
terraform-version |
1.2.9 |
Versión de la herramienta CLI de Terraform para instalar si no está presente en la imagen utilizada para las etapas stages.You también puede proporcionar versiones como 1.5.0-1. Esta es la [lista de versiones de Terraform]. (https://releases.hashicorp.com/terraform/) |
Los mismos parámetros se aplican a los scripts que se utilizan en un proceso de despliegue de CD de IaC. Puesto que el proceso de CD puede procesar varias entradas de inventario, puede definir el ámbito de un parámetro para una entrada de inventario.
Para especificar el contexto de Terraform y las variables para un ámbito (entrada de inventario), prefije la propiedad con el nombre de entrada de inventario, por ejemplo: <inventory_entry>_. Este prefijo se aplica a las
entradas de entorno tf-dir, TF_VAR_<XXXX>, tfvars-repository, tfvars-branch y tfvars-files.
Ejemplo:
hello-iac-sample_TF_VAR_resource_group : Default
Escaneos y comprobaciones en Escaneo de código estático
La etapa de exploración de código estático ejecuta una serie de herramientas de analizador de código estático en los repositorios de IaC especificados. Se exploran los repositorios que proporciona el mandato pipelinectl save_repo y el repositorio de la app predeterminada.
Puede utilizar cualquiera de los métodos definidos para la exploración de código estático configurable para la interconexión de integración continua relacionada con la aplicación.
El conducto de integración continua IaC define más herramientas que se habilitan utilizando los parámetros opt-in-* de la Tabla 2 establecidos en 1.
| Exploración o comprobación | Descripción | Habilitación |
|---|---|---|
| tflint | Ejecuta tflint $tflint_args --format=json desde tflint para advertir sobre sintaxis obsoleta, declaraciones no utilizadas y aplicar las mejores prácticas, convenciones
de nomenclatura. |
opt-in-tflint a 1 |
| fmt | Ejecuta terraform fmt -check desde fmt para reescribir los archivos de configuración de Terraform a un formato y estilo canónicos. |
opt-in-terraform-fmtvalidate a 1 |
| Name | Type | Default | Description | Obligatorio u opcional |
|---|---|---|---|---|
opt-in-terraform-fmt-validate |
text | Ejecuta los mandatos terraform fmt y terraform validate en la etapa static-scan. |
opcional | |
opt-in-tflint |
text | Ejecuta el mandato tflint en la etapa static-scan. |
opcional | |
tflint-version |
text | v0.53.0 |
Indique la versión de tflint que se va a instalar si no se proporciona en la imagen utilizada para la ejecución de la etapa static-scan. |
opcional |
tflint-config |
text | El archivo de configuración que se debe utilizar para tflint. |
opcional | |
tflint-args |
text | Los argumentos de mandato que se pasan a tflint durante la invocación de la herramienta. |
opcional |
Exploraciones y comprobaciones en las comprobaciones de conformidad
Las comprobaciones de conformidad definidas para el conducto de integración continua relacionado con la aplicación también se realizan para el conducto de integración continua IaC.
El conducto de AC IaC realiza algunas comprobaciones adicionales que se habilitan utilizando las características de opt-in-.
La interconexión de AC IaC define más herramientas que se habilitan utilizando los parámetros opt-in- establecidos en 1.
| Exploración o comprobación | Descripción | Habilitación |
|---|---|---|
cra-tf |
Utilice el mandato ibmcloud cra terraform-validate de la herramientaIBM Cloud CRA para analizar el cumplimiento de un plan de Terraform |
opt-in-cra-tf-validate establézcalo en 1. |
tfsec |
Utilice la herramienta TFsec para buscar posibles errores de configuración y crear problemas de conformidad. | opt-in-tfsec establecer a 1 |
checkov |
Utilice la herramienta Checkov para buscar configuraciones incorrectas y crear problemas de conformidad. | opt-in-checkov establecer a 1 |
| Propiedad | Valor predeterminado | Descripción |
|---|---|---|
opt-in-cra-tf-validate |
El distintivo para ejecutar comprobaciones de conformidad utilizando la herramienta ibmcloud cra terraform-validate. |
|
cra-tf-policy-file |
La ruta al archivo de perfil de política. Para obtener más información, consulte Opciones de mandato de Terraform. | |
cra-tf-ignore-rules |
La lista separada por comas de reglas que se deben ignorar del informe ibmcloud cra terraform-validate. |
|
cra-tf-ignore-rules-file |
La vía de acceso al archivo JSON que contiene la lista de reglas que se deben ignorar del informe ibmcloud cra terraform-validate. Para obtener más información sobre el formato de archivo, consulte Formato para cra-tf-ignore-rules-file. |
|
opt-in-tfsec |
El distintivo para ejecutar comprobaciones de conformidad utilizando la herramienta tfsec. |
|
tfsec-version |
Versión de `v1.21.0`` | The tfsec que se va a utilizar. |
tfsec-args |
Los argumentos del mandato tfsec. |
|
opt-in-checkov |
El distintivo para ejecutar comprobaciones de conformidad utilizando la herramienta checkov. |
|
checkov-version |
`` que significa la última versión | checkov versión a instalar si no está disponible en el entorno. |
checkov-args |
Los argumentos del mandato checkov. |
A partir del 15 de diciembre de 2025, IBM Cloud Security and Compliance Center quedará obsoleto. Las instancias de servicio existentes no funcionan.
Estas secuencias de comandos se ejecutan en todos los repos de los que tiene constancia la canalización. Para añadir repos a estas exploraciones, utilice la interfaz pipelinectl que se proporciona en su etapa de configuración. Para
obtener más información, consulte pipelinectl.
Para obtener más información sobre la salida esperada de las etapas del script de usuario, consulte Scripts personalizados.
Formato para cra-tf-ignore-rules-file
El formato esperado para el archivo definido por cra-tf-ignore-rules-file format. El formato es similar al formato (sin el campo scc_parameters ) que aparece en Ejemplo V2 archivo de perfil clásico para el comando terraform-validate.
Contenido de ejemplo para el archivo cra-tf-ignore-rules-file:
{
"scc_rules": [
{
"scc_rule_id": "rule-8cbd597c-7471-42bd-9c88-36b2696456e9"
},
{
"scc_rule_id": "rule-c97259ee-336d-4c5f-b436-1868107a9558"
}
]
}
Artefacto de compilación
En la fase de creación de artefactos, puede crear sus propios artefactos. Para el conducto de AC IaC, la característica de compilación predeterminada crea un archivo Tar que contiene la configuración de Terraform.
La característica de compilación predeterminada se puede configurar utilizando parámetros específicos de la Tabla 5.
| Propiedad | Valor predeterminado | Descripción |
|---|---|---|
configuration-name |
La parte "humana" del nombre de repositorio Git. | El nombre de la configuración de IaC. Se utiliza para el nombre de archivo de artefacto y la entrada de inventario que crea el conducto de AC IaC. |
build-ignore-file |
Vía de acceso a un archivo de lista de omisiones (utilizado para tar --exclude-from) |
Para obtener más información sobre cómo acceder a parámetros y secretos en las etapas de script personalizados, consulte Scripts personalizados.
Signo de artefacto
La etapa de firma de artefacto proporciona un comportamiento predeterminado para utilizar una clave GPG para crear un archivo de firma desconectado para uno o varios artefactos.
| Propiedad | Descripción |
|---|---|
signing-key |
Valor de clave privada GPG que se utiliza para la versión ASCII de firmas desconectadas de uno o varios artefactos |
Para utilizar un proceso de firma diferente, personalice esta etapa utilizando la configuración de .pipeline-config.yaml en el proyecto.
Desplegar en desarrollo
La etapa de despliegue despliega el artefacto de configuración en un entorno de desarrollo. Puede proporcionar sus variables y credenciales para esta etapa desde las variables en la interfaz de usuario de interconexión y desde la carga útil de webhook del desencadenante de interconexión.
Los scripts que se proporcionan como parte de la imagen base común pueden ayudar a realizar un despliegue utilizando schematics o la CLI de Terraform. Los parámetros para configurar los scripts para la acción de despliegue se describen en la Tabla 8 y la Tabla 9.
Parámetros de configuración para utilizar Schematics como herramienta de despliegue
| Propiedad | Valor predeterminado | Descripción |
|---|---|---|
schematics-ibmcloud-api-key |
Sobrescribe el ibmcloud-api-key que se utiliza para las acciones relacionadas con schematics (recuperación/creación de espacio de trabajo de schematics, planificar y aplicar). |
|
schematics-workspace-name |
<schematics-workspace-prefix><toolchain name>-<pipeline id> |
Espacio de trabajo a utilizar o a crear si no existe. Si el espacio de trabajo existe, debe ser un espacio de trabajo creado sin un enlace a un Git repositorio. Para obtener más información, consulte Creación de Schematics espacios de trabajo.
Esta restricción se debe a que el script carga el IaC artefacto de configuración como un tar archivo mediante la carga del espacio Schematics de trabajo. |
schematics-workspace-prefix |
Prefijo utilizado para la creación del espacio de trabajo cuando no se especifica ningún espacio de trabajo para la acción de despliegue. | |
schematics-workspace-resource-group |
El valor predeterminado es el grupo de recursos de la cadena de herramientas. | Grupo de recursos que se utilizará para la creación del espacio de trabajo de schematics. |
schematics-workspace-region |
El valor predeterminado es la región de la cadena de herramientas. | Región que se utilizará para la creación del espacio de trabajo de schematics. |
schematics-workspace-netrc |
Se calcula a partir de repositorios conocidos. | Valor para la configuración de netrc del espacio de trabajo de schematics que se va a crear. Para obtener más información, consulte Soporte para descargar módulos desde un host remoto privado. |
schematics-workspace-terraform-version |
El valor predeterminado es la versión de Terraform de schematics recuperada utilizando ibmcloud schematics version --output JSON |
Versión de Terraform utilizada para el espacio de trabajo de Schematics que se va a crear. Consulte Visión general de imágenes de Schematics y proveedores de Terraform empaquetados. |
Para configurar los scripts en el proceso de implementación IaC del CD, defina el parámetro que se aplica a una entrada de inventario determinada. Para especificar propiedades de entorno relacionadas con Schematics as deployment tool para un ámbito determinado (entrada de inventario), añada a la propiedad el nombre de entrada de inventario, por ejemplo: <inventory_entry>_. Este prefijo se aplica a todas las entradas de entorno relacionadas con esquemas
(excepto schematics-ibmcloud-api-key).
Ejemplo:
hello-iac-sample_schematics-workspace-name : workspace-for-deployment-of-hello-iac-sample
Configuración para utilizar la CLI de Terraform como herramienta de despliegue
| Propiedad | Descripción |
|---|---|
tf-backend-s3-bucket |
Nombre de grupo que almacena el estado. |
tf-backend-s3-key |
Nombre que se debe utilizar para persistir el estado. |
tf-backend-s3-region |
Región de la instancia Cloud Object Storage. |
tf-backend-s3-endpoint |
Cloud Object Storage punto final. |
tf-backend-s3-access_key |
Subsección access_key de HMAC de las credenciales. |
tf-backend-s3-secret_key |
Subsección secret_key de HMAC de las credenciales. |
Tenga en cuenta lo siguiente:
- Para obtener más información sobre cómo utilizar el punto final o grupo de Cloud Object Storage para almacenar el estado de Terraform, consulte: Almacenar estados de Terraform en Cloud Object Storage.
- Para configurar los scripts en el proceso de despliegue de CD de IaC, defina el parámetro cuyo ámbito es una entrada de inventario. Para especificar propiedades de entorno relacionadas con
Terraform CLI as deployment toolpara un ámbito (entrada de inventario), prefije la propiedad con el nombre de entrada de inventario, por ejemplo:<inventory_entry>_. Este prefijo se aplica a todas las entradas de entorno relacionadas con esquemas.
Ejemplo:
hello-iac-sample_tf-backend-s3-bucket : bucket-to-store-tfstate-of-hello-iac-sample
Publicación en inventario
Utilice la etapa de publicación en el script de usuario de inventario para añadir artefactos al inventario utilizando el mandato de la CLI cocoa inventory add. Para obtener más información sobre cocoa inventory add,
consulte adición de inventario de cacao.
Puede utilizar la interfaz pipelinectl para acceder a sus repositorios y artefactos mediante los comandos list_repos, load_repo, list_artifacts y load_artifact. Para obtener más
información, consulte pipelinectl.
Recopilación de datos de conformidad en la compilación
Cuando la interconexión se ejecuta correctamente, puede recopilar información sobre la compilación.
Se recogen pruebas de todos los cheques, escáneres, pruebas y firmas de artefactos y se depositan en el armario de pruebas. Los archivos de registro de interconexiones también se guardan en el archivo, junto con los datos de la propia interconexión,
que contienen las definiciones de Tekton. Los datos de conformidad en las revisiones de iguales también se recopilan en este paso. La interconexión utiliza pipelinectl para buscar repositorios con solicitudes de extracción que
se fusionaron después de la última compilación. El proceso también comprueba el estado de revisión del RP, lo guarda como artefacto y crea pruebas basadas en el resultado.
El script final es un evaluador, que marca el estado de la interconexión en color verde o rojo, en función de los estados de las pruebas. Si se produce algún fallo, la ejecución de integración continua se marca en rojo.