Pipeline de integração contínua para infraestrutura como Código

O pipeline de integração contínua para Infraestrutura como Código ( IaC ) cria a configuração implantável a partir dos IaC repositórios (conteúdo Terraform).

Antes de construir os artefatos, o pipeline verifica se o código foi escaneado e testado, como é feito para o processamento de solicitações pull. Os artefatos criados também são verificados quanto a vulnerabilidades e assinados no pipeline antes de serem marcados como prontos para liberação e implantação no inventário. Para obter mais informações, consulte Inventário. Ao contrário do pipeline de solicitações pull, o pipeline de integração contínua coleta artefatos de evidências e de resultados em cada estágio da construção, como as fases de teste, varredura e assinatura. Esses dados estão associados aos artefatos de construção e podem ser acompanhados pelo processo de implementação e gerenciamento de mudanças.

Estágios e tarefas

Integração contínua para estágios e tarefas IaC
Tarefa ou estágio Descrição simples Customizável em .pipeline-config.yaml
start Configura o ambiente do pipeline. Não
setup Configura seu ambiente de compilação e teste. True
test Executa testes de unidade em configuração, IaC. True
static-scan Executa código de varredura estática no IaC. True
compliance-checks Executa varreduras do Code Risk Analyzer e outras verificações de conformidade em repositórios de aplicativos. True
build-artifact Constrói os artefatos correspondentes à configuração. True
sign-artifact Assina os artefatos construídos. True
deploy Implementa a configuração, ao utilizar os artefatos construídos, para o ambiente dev. True
acceptance-test Executa testes de aceitação e integração na configuração implantada no ambiente de desenvolvimento. True
release Adiciona os artefatos construídos ao inventário. True
finish Coleta, cria e faz upload dos arquivos de registros, artefatos e evidências para o armário de evidências. Não

Para obter mais informações sobre como personalizar os estágios usando o arquivo .pipeline-config.yaml, consulte Scripts personalizados. e) e listas Parâmetros de pipeline.

Parâmetros para configurar o contexto Terraform e variáveis

Para definições de Terraform que definem infraestrutura-como-fonte de código, o contexto e as variáveis que estão relacionadas a Terraform e Terraform-relacionadas a varredura e verificações podem ser definidas utilizando-se os parâmetros descritos na Tabela 1.

Parâmetros para configurar o contexto e as variáveis do Terraform
Propriedade Padrão Descrição
tf-dir . Localização ou caminho no repositório de origem onde main.tf está localizado.
TF_VAR_<XXXX> Pipeline ou acionar propriedade (segura ou não segura) que fornece o valor para variável Terraform <XXXX>
tfvars-repository Repositório de código-fonte de infraestrutura Git. Git repositório que contém arquivos tfavars. O repositório deve ser declarado na cadeia de ferramentas.
tfvars-branch main Ramificação do repositório Git que contém os arquivos tfvars.
tfvars-files Arquivos que contêm valores de variáveis Terraform.
terraform-version 1.2.9 A versão da ferramenta da CLI do Terraform para instalar se não estiver presente na imagem usada para os estágios do stages.You também é possível fornecer versões como 1.5.0-1. Aqui está a [lista de versões do Terraform]. (https://releases.hashicorp.com/terraform/)

Os mesmos parâmetros se aplicam para os scripts que são usados em um processo de implementação de CD IaC. Como o processo do CD pode processar várias entradas de inventário, é possível fazer o escopo de um parâmetro para uma entrada de inventário. Para especificar o contexto Terraform e variáveis para um escopo (entrada de inventário), prefixe a propriedade com o nome de entrada do inventário, por exemplo: <inventory_entry>_. Este prefixo se aplica para as entradas de ambiente tf-dir, TF_VAR_<XXXX>, tfvars-repository, tfvars-branch e tfvars-files.

Exemplo:

hello-iac-sample_TF_VAR_resource_group : Default

Varreduras e verificações na varredura de código estático

O estágio de varredura de código estático executa diversas ferramentas de analisador de código estático nos repositórios IaC especificados. É feita a varredura do repositório do aplicativo padrão e dos repositórios fornecidos pelo comando pipelinectl save_repo.

Você pode usar qualquer um dos métodos que são definidos para scan code scan configuráveis para aplicação relacionar pipeline de integração contínua.

O pipeline de integração contínua IaC define mais ferramentas que são ativadas usando os parâmetros opt-in-* da Tabela 2 definida como 1.

Varredura ou verificação Descrição Ativação
tflint Executa tflint $tflint_args --format=json do tflint para avisar sobre sintaxe obsoleta, declarações não utilizadas e aplicar práticas recomendadas e convenções de nomenclatura. opt-in-tflint definido como 1
fmt Executa terraform fmt -check a partir de fmt para reescrever os arquivos de configuração do Terraform em um formato e estilo canônicos. opt-in-terraform-fmtvalidate definido como 1
IaC parâmetros das ferramentas de varredura estática
Nome Tipo Padrão Descrição Necessário ou opcional
opt-in-terraform-fmt-validate text Executa os comandos terraform fmt e terraform validate no estágio static-scan. opcional
opt-in-tflint text Executa o comando tflint no estágio static-scan. opcional
tflint-version text v0.53.0 Indique a versão do tflint para instalar se não for fornecida na imagem usada para a execução do estágio static-scan. opcional
tflint-config text O arquivo de configuração a ser usado para tflint. opcional
tflint-args text Os argumentos de comandos que são transmitidos para o tflint durante a chamada da ferramenta opcional

Verificações e varreduras nas verificações de conformidade

verificações de conformidade definidas para pipeline de integração contínua relacionada ao aplicativo também são realizadas para o pipeline de integração contínua IaC.

O pipeline de CI IaC executa algumas verificações adicionais que são ativadas usando recursos opt-in-.

O pipeline de IC IaC define mais ferramentas que são ativadas usando os parâmetros opt-in- configurados para 1.

Varreduras e verificações adicionais de conformidadeIaC
Varredura ou verificação Descrição Ativação
cra-tf Use o comando ibmcloud cra terraform-validate a partir da ferramenta IBM Cloud CRA para analisar um plano Terraform para conformidade opt-in-cra-tf-validate configurado como 1.
tfsec Use a ferramenta TFsec para encontrar possíveis desconfigurações e criar problemas de conformidade. opt-in-tfsec configurar para 1
checkov Use a ferramenta Checkov para encontrar configurações erradas e criar problemas de conformidade. opt-in-checkov configurar para 1
Varreduras de conformidade comIaC e verificação dos parâmetros de configuração
Propriedade Padrão Descrição
opt-in-cra-tf-validate A sinalização para executar verificações de conformidade usando a ferramenta ibmcloud cra terraform-validate.
cra-tf-policy-file O caminho para o arquivo de perfil de política. Para obter mais informações, consulte Opções de comando Terraform.
cra-tf-ignore-rules A lista separada por vírgula de regras a serem ignoradas do relatório ibmcloud cra terraform-validate.
cra-tf-ignore-rules-file O caminho para o arquivo JSON que contém a lista de regras a serem ignoradas do relatório ibmcloud cra terraform-validate. Para obter mais informações sobre o formato de arquivo, consulte Formato para cra-tf-ignore-rules-file.
opt-in-tfsec A sinalização para executar verificações de conformidade usando a ferramenta tfsec.
tfsec-version `v1.21.0`` The tfsec versão a ser usada.
tfsec-args Os argumentos do comando tfsec..
opt-in-checkov A sinalização para executar verificações de conformidade usando a ferramenta checkov.
checkov-version `` significa a versão mais recente checkov versão a ser instalada se não estiver disponível no ambiente.
checkov-args Os argumentos do comando checkov..

A partir de 15 de dezembro de 2025, o IBM Cloud Security and Compliance Center será descontinuado. Todas as instâncias de serviço existentes estão inoperantes.

Esses scripts são executados em todos os repositórios que o pipeline conhece. Para adicionar repositórios a essas varreduras, use a interface pipelinectl que é fornecida em seu estágio de configuração. Para obter mais informações, consulte pipelinectl.

Para obter mais informações sobre a saída esperada dos estágios de scripts do usuário, consulte Scripts customizados.

Formato para cra-tf-ignore-rules-file

O formato esperado para o arquivo definido pelo cra-tf-ignore-rules-file format. O formato é semelhante ao formato (sem o campo scc_parameters ) que está no arquivo de perfil clássico do Exemplo V2 para o comando terraform-validate.

Conteúdo de amostra para o arquivo 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"
        }
    ]
}

Artefato de compilação

No estágio de criação de artefato, você pode criar seus próprios artefatos. Para o pipeline de CI IaC, o recurso de construção padrão cria um arquivo Tar que contém a configuração Terraform.

O recurso de construção padrão pode ser configurado com o uso de parâmetros específicos da Tabela 5.

Parâmetros de configuração do artefato de construção
Propriedade Padrão Descrição
configuration-name A parte "humanish" do nome do repositório Git. O nome da configuração IaC. Usado para o nome de arquivo de artefato e entrada de inventário que é construído pelo pipeline de IC IaC.
build-ignore-file Caminho para um arquivo de lista ignorar (usado para tar --exclude-from)

Para obter mais informações sobre como acessar parâmetros e segredos em estágios de scripts customizados, consulte Scripts customizados.

Sinal de artefato

O estágio de artefato de sinais fornece um comportamento padrão para usar uma chave GPG para criar um arquivo de assinatura descolado para um ou mais artefatos.

Crie uma chave GPG para o artefato
Propriedade Descrição
signing-key Valor de chave privada GPG que é usado para a versão ascii de assinaturas descoladas de um ou mais artefatos

Para usar um processo de sinais diferente, personalize esse estágio usando a configuração .pipeline-config.yaml em seu projeto.

Implementar no desenvolvimento

O estágio deploy implementa artefato de configuração em um ambiente de desenvolvimento. As variáveis e credenciais para este estágio podem ser fornecidas a partir de variáveis na IU do pipeline e de carga de útil do webhook do acionador do pipeline.

Os scripts que são fornecidos como parte da imagem base comum podem ajudar a realizar uma implementação usando esquemas ou CLI Terraform. Os parâmetros para configurar os scripts para a ação de implantação estão descritos na Tabela 8 e na Tabela 9.

Parâmetros de configuração para usar Schematics como ferramenta de implementação

Parâmetros de configuração para usar o Schematics como ferramenta de implantação
Propriedade Padrão Descrição
schematics-ibmcloud-api-key Sobrescreve o ibmcloud-api-key usado para as ações relacionadas ao schematics (recuperação / criação da área de trabalho do schematics, plano e aplicação).
schematics-workspace-name <schematics-workspace-prefix><toolchain name>-<pipeline id> Espaço de trabalho para usar ou para criar se ele não existir. Se o espaço de trabalho existir, ele deve ser um espaço de trabalho criado sem um link para um Git repositório. Para obter mais informações, consulte Criação de Schematics espaço de trabalho. Essa restrição ocorre porque o script carrega o IaC artefato de configuração como um tar arquivo usando o upload do espaço Schematics de trabalho.
schematics-workspace-prefix Prefixo usado para criação de área de trabalho quando nenhum espaço de trabalho é especificado para a ação de implementação.
schematics-workspace-resource-group Padronizado para o grupo de recursos da cadeia de ferramentas O grupo de recursos a ser usado para a criação da área de trabalho do schematics
schematics-workspace-region O padrão é a região da cadeia de ferramentas. Região a ser usada para a criação da área de trabalho de esquemas.
schematics-workspace-netrc Computado a partir de repositórios conhecidos. Valor para a configuração netrc da área de trabalho de esquemas a ser criado. Para obter mais informações, consulte Apoiando para fazer o download de módulos do host remoto privado.
schematics-workspace-terraform-version Padronizado para a versão do schematics terraform recuperada usando ibmcloud schematics version --output JSON Versão Terraform usada para que a área de trabalho de esquemas seja criada. Veja Visão geral de imagens Schematics e provedores de Terraforme empacotados.

Para configurar os scripts no processo de implantação do IaC CD, defina o parâmetro que está dentro do escopo de uma determinada entrada do inventário. Para especificar as propriedades de ambiente relacionadas ao Schematics as deployment tool para um determinado escopo (entrada de inventário), prefixe a propriedade com o nome da entrada de inventário, por exemplo: <inventory_entry>_. Esse prefixo se aplica a todas as entradas de ambientes relacionadas ao schematics (exceto schematics-ibmcloud-api-key).

Exemplo:

hello-iac-sample_schematics-workspace-name : workspace-for-deployment-of-hello-iac-sample

Configuração para usar o Terraform CLI como ferramenta de implementação

Configuração para usar o Terraform CLI como ferramenta de implantação
Propriedade Descrição
tf-backend-s3-bucket Nome do Balde que armazena o estado.
tf-backend-s3-key Nome a usar para persistir o estado.
tf-backend-s3-region Região da instância Cloud Object Storage.
tf-backend-s3-endpoint Cloud Object Storage ponto final.
tf-backend-s3-access_key HMAC access_key subseção das credenciais.
tf-backend-s3-secret_key HMAC secret_key subseção das credenciais.

Observe o seguinte :

  • Para obter mais informações sobre como utilizar o terminal ou balde do Cloud Object Storage para armazenar o estado Terraform, consulte: Armazenar estados Terraform em Cloud Object Storage.
  • Para configurar os scripts no processo de implementação do CD IaC, defina o parâmetro que é escoado para uma entrada de inventário. Para especificar propriedades de ambiente relacionadas ao Terraform CLI as deployment tool para um escopo (entrada de inventário), prefixe a propriedade com o nome de entrada do inventário, por exemplo: <inventory_entry>_. Este prefixo aplica-se para as todas as entradas de ambiente relacionadas à esquematização.

Exemplo:

hello-iac-sample_tf-backend-s3-bucket : bucket-to-store-tfstate-of-hello-iac-sample

Liberação para o inventário

Use o estágio release to inventory user script para incluir artefatos no inventário, usando o comando da CLI cocoa inventory add CLI command. Para obter mais informações sobre cocoa inventory add, consulte adicionar estoque de cacau.

Você pode usar a interface pipelinectl para acessar seus repositórios e artefatos usando os comandos list_repos, load_repo, list_artifacts e load_artifact. Para obter mais informações, consulte pipelinectl.

Coleta de dados de conformidade sobre a construção

Após a execução bem-sucedida do pipeline, é possível coletar informações sobre a construção.

As evidências são coletadas em todas as verificações, digitalizações, testes e assinaturas de artefatos e são colocadas no armário de evidências. Os arquivos de log do pipeline também são salvos no armazenamento, juntamente com os dados do próprio pipeline, contendo as definições Tekton. Nesta etapa, também são coletados dados de conformidade sobre as revisões de peer. O pipeline usa pipelinectl para buscar repositórios com solicitações pull que foram mesclados desde a última construção. O pipeline também verifica o status de revisão do PR, salva-o como um artefato e cria evidências com base no resultado.

O script final é um avaliador, que marca o status do pipeline como verde ou vermelho, com base nos status das evidências. Se houver alguma falha, a execução da integração contínua será marcada em vermelho.