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
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. | 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 análisis de Code Risk Analyzer y otras comprobaciones de cumplimiento 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 de la configuración implementada en el entorno de desarrollo. | Sí |
release |
Agrega los artefactos construidos al inventario. | Sí |
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.
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
.
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
.
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-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.
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.
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 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
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.