vault auth enable approle
vault secrets enable -path=secrets/infra/terraform kv-v2
vault write secrets/infra/terraform/config max_versions=100
vault write auth/approle/role/${role_name} token_policies="${policy_name}" token_ttl=10m token_max_ttl=1h
Example policy
path "secrets/infra/terraform/data/abstractproject/abstractkey" {
capabilities = [ "create", "read", "update" ]
}
Example gitlab ci
variables:
PLAN: plan.tfplan
VAULT_KV_PATH: secrets/infra/terraform/abstractproject/abstractkey
plan:
stage: build
script:
- ./vault_state.sh download
- terraform plan -lock=false -out=$PLAN
....
apply:
stage: deploy
environment:
name: production
script:
- ./vault_state.sh download
- terraform apply -input=false $PLAN
- ./vault_state.sh upload
....
Required env
- VAULT_ROLE_ID
- VAULT_SECRET_ID
- VAULT_KV_PATH