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