provider "infisical" {
host = var.infisical_host
service_token = var.infisical_mlops_infra_token
}
env_slug: 어떤 enviroment의 시크릿을 가져올건지 정의. 어떤 프로젝트에서 시크릿을 가져올건지는 위에서 provider에 넣어준 token에 있는 정보를 사용하게 되고 env_slug는 해당 프로젝트의 설정에 정의된 Enviroments에서 확인할 수 있다.

folder_path: Infisicial은 프로젝트 뿐만 아니라 폴더별로 시크릿을 모아서 관리할 수 있다. folder_path를 절대 경로인 “/”로 정의하면 해당 프로젝트의 env_slug에 속한 모든 시크릿을 가져온다는 뜻이다.
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
}