Provider 및 Version 정의

provider "infisical" {
  host          = var.infisical_host
  service_token = var.infisical_mlops_infra_token
}

Data 리소스 정의

data "infisical_secrets" "mlops_infra" {
  env_slug    = "prod"
  folder_path = "/"
}

사용

아래와 같이 provider나 resource 등 어떠한 유형에 상관 없이 tfvars 파일에서 받던 시크릿 변수들을 infisical provider로 받도록 대체할 수 있다.

provider "azurerm" {
  features {}

  client_id       = data.infisical_secrets.mlops_infra.secrets["AZURE_CLIENT_ID"].value
  client_secret   = data.infisical_secrets.mlops_infra.secrets["AZURE_CLIENT_SECRET"].value
  tenant_id       = data.infisical_secrets.mlops_infra.secrets["AZURE_TENANT_ID"].value
  subscription_id = data.infisical_secrets.mlops_infra.secrets["AZURE_SUBSCRIPTION_ID"].value
}
resource "kubectl_manifest" "mlops_infra_git_repo" {
  yaml_body = <<YAML
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
  name: mlops-predictor-prod
  namespace: flux-system
spec:
  interval: 30s
  url: <https://$>{data.infisical_secrets.mlops_infra.secrets["GIT_TOKEN"].value}@github.com/bluewhalekr/mlops-infra
  token:
    secretRef:
      name: flux-system-git-deploy
      key: identity
  ref:
    branch: main
YAML
}

참고

Terraform Registry