07/05/2024

pre-commit

özellikle pipeline da terraform (ve belki de ansible icinde) harika bir kontol toolu olan pre-commit le ilgili notlarim :

Kurulum :

pre-commit.com

Pre-commit kurulumu per repository şeklinde oluyor. Repositorynin olduğu root klasörde

pre-commit install
Komutunu veriyoruz.

Ancak aşağıda ki konfigürasyona bağlı olarak ek kurulumlar gerekli örnek:

brew install terraform-docs
brew install checkov
brew install tflint


Komutlar :
Fmt (text formating)

pre-commit run terraform_fmt --files ./*

Readme olusturmak icin

$ pre-commit run terraform_docs --files ./*

pre-commit validate

$ pre-commit run terraform_validate --files ./*

Pre-commit hookları ile kodun güvenlik kontrolü otomatik yapılabilir.

$ pre-commit run terraform_checkov --files ./*

Linting

$ pre-commit run terraform_tflint --files ./*

.pre-commit-config.yaml

repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
  rev: v1.76.0 # Get the latest from: https://github.com/antonbabenko/pre-commit-terraform/releases
  hooks:
    - id: terraform_fmt
    - id: terraform_docs
      args:
        - --hook-config=--add-to-exiting-file=true
        - --hook-config=--create-file-if-not-exist=true
        - --hook-config=--html=false
        - --hook-config=--anchor=false
    - id: terraform_docs_without_aggregate_type_defaults
    - id: terraform_validate
    - id: terraform_checkov
      args:
        - --args=--quiet
        - --args=--skip-check CKV2_AWS_8
        - --args=--skip-check CKV_AWS_28
        - --args=--skip-check CKV_AWS_260
        - --args=--skip-check CKV2_AWS_11
        - --args=--skip-check CKV2_AWS_19
        - --args=--skip-check CKV_AWS_19
        - --args=--skip-check CKV_AWS_144
        - --args=--skip-check CKV2_AWS_12
    - id: terraform_tflint
      args:
        - --args=--only=terraform_unused_declarations
        - --args=--only=terraform_documented_outputs
        - --args=--only=terraform_documented_variables
        - --args=--only=terraform_comment_syntax
        - --args=--only=terraform_naming_convention
        #- --args=--only=terraform_required_providers
        - --args=--only=terraform_unused_required_providers