IBM Cloud Docs
Conducto de integración continua para infraestructura como código

Conducto de integración continua para infraestructura como código

El conducto de integración continua para Infraestructura como código (IaC) crea la configuración desplegable a partir de los repositorios IaC (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 el proceso antes de marcarlos como listos para su lanzamiento e implementación 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

Tabla 1. Integración continua para etapas y tareas de IaC
Tarea o etapa Descripción breve Personalizable en .pipeline-config.yaml
start Configura el entorno de la tubería. No
setup Configura su entorno de compilación y prueba.
test Ejecuta pruebas de unidad en la configuración, IaC.
static-scan Ejecuta el código de escaneo estático en IaC.
compliance-checks Ejecuta análisis de Code Risk Analyzer y otras comprobaciones de cumplimiento en repositorios de aplicaciones.
build-artifact Crea los artefactos correspondientes a la configuración.
sign-artifact Firma los artefactos compilados.
deploy Despliega la configuración, utilizando los artefactos compilados, en el entorno de desarrollo.
acceptance-test Ejecuta pruebas de aceptación e integración de la configuración implementada en el entorno de desarrollo.
release Agrega los artefactos construidos al inventario.
finish Recopila, crea y carga los archivos de registros, los artefactos y las pruebas en el casillero de pruebas. No

Para obtener más información sobre cómo personalizar etapas utilizando el .pipeline-config.yaml archivo, ver Guiones 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.

Tabla 2. Parámetros para configurar contexto y variables de Terraform
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

Exploración 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.

Tabla 3. IaC
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.46.1 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.

Tabla 4. IaC comprobaciones y exploraciones de conformidad adicionales
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
Tabla 5. IaC explora y comprueba los parámetros de configuración
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-scc-instance-name Valor predeterminado para la integración de herramientas de Security and Compliance Center configurada en la cadena de herramientas El nombre de integración de la herramienta Security and Compliance Center que se utilizará para captar el perfil y la conexión para configurar el mandato cra terraform validate.
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-image bridgecrew/checkov La imagen que realiza la comprobación de conformidad de checkov.
checkov-args Los argumentos del mandato checkov.

Estos scripts se ejecutan en todos los repositorios que conoce la canalización. Para agregar repositorios a estos escaneos, use el pipelinectl interfaz que se proporciona en la 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 se encuentra en el archivo de perfil clásico SCC de ejemplo V2 para el mandato 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 etapa de construcción de artefactos, puedes construir tus 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.

Tabla 6. Parámetros de configuración de artefacto de compilación
Propiedad Valor predeterminado Descripción
configuration-name La parte "humana" del nombre de repositorio Git. El nombre deIaC configuración. 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.

Tabla 7. Clave GPG de artefacto de compilación
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

Tabla 8. 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 repositorio Git. Para obtener más información, consulte Creación de espacios de trabajo deSchematics. Esta restricción se debe a que el script carga el artefacto de configuración IaC como un archivo tar utilizando Schematics Carga de espacio 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 despliegue de CD de IaC, defina el parámetro que tiene como ámbito 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

Tabla 9. 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 laCloud Object Storage instancia.
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 tool 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 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.

Puedes usar el pipelinectl interfaz para acceder a sus repositorios y artefactos mediante el uso de list_repos,load_repo,list_artifacts, y load_artifact comandos. 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.

La evidencia se recopila en todos los controles, escaneos, pruebas y firmas de artefactos y se coloca en el casillero de evidencia. 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. La canalización también verifica el estado de la revisión de relaciones públicas, la guarda como un artefacto y crea evidencia basada 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 hay algún error, la ejecución de integración continua se marca en rojo.