vault 함수
vault 함수
HashiCorp Vault KV 저장소에서 비밀(secret)을 가져와요. Packer는 비밀을 읽어 사용자 변수로 템플릿에 추가할 수 있어요. vault 함수는 사용자 변수의 기본값 안에서만 사용할 수 있어요. 그래서 사용자 변수를 vault 비밀로 기본값 지정할 수 있죠.
Vault KV 저장소에 대한 추가 정보는 Vault 문서를 참고하세요.
출처: Packer 공식 문서
본문
v2 kv 엔진 사용 예시:
vault kv put secret/hello foo=world로 vault에 값을 저장했다면, 다음처럼 접근할 수 있어요.
locals {
foo = vault("/secret/data/hello", "foo")
}
그러면 local.foo에 값 "world"가 할당돼요.
v1 kv 엔진 사용 예시:
다음과 같이 vault에 값을 저장했다면:
vault secrets enable -version=1 -path=secrets kv
vault kv put secrets/hello foo=world
다음처럼 접근할 수 있어요.
locals {
foo = vault("secrets/hello", "foo")
}
이 예시는 Vault 경로 secret/foo에 접근해 키 foo에 저장된 값을 반환하고, 그것을 로컬 변수 local.foo로 저장해요.
Vault 비밀이 매우 민감한 값을 담고 있다면, locals 블록과 혼동하지 말아야 할 local 블록을 사용해 그 값을 민감함(sensitive)으로 표시할 수 있어요.
local "foo" {
expression = vault("secrets/hello", "foo")
sensitive = true
}
local 블록 예시는 Vault 경로 secrets/foo에 접근해 키 foo에 저장된 값을 반환하고, 그것을 로컬 변수 local.foo로 저장해요. 하지만 새로 저장된 로컬 변수의 출력은 Packer 빌드 출력에서 걸러져서 <sensitive> 값으로 대체돼요. 자세한 내용은 Local Values를 참고하세요.
사용법 (Usage)
Vault 함수가 동작하려면 환경 변수 VAULT_TOKEN과 VAULT_ADDR을 유효한 값으로 설정해야 해요.
:::note HCL 함수는 로컬 변수 정의나 프로비저너/포스트-프로세서와 인라인으로 사용할 수 있어요. 전역 변수 정의에서는 사용할 수 없어요. :::
우리가 사용하는 api 도구는 환경 변수를 통해 Vault 클라이언트를 더 커스터마이즈할 수 있게 해 줘요.
사용 가능한 환경 변수의 전체 목록은 다음과 같아요.
"VAULT_ADDR"
"VAULT_AGENT_ADDR"
"VAULT_CACERT"
"VAULT_CAPATH"
"VAULT_CLIENT_CERT"
"VAULT_CLIENT_KEY"
"VAULT_CLIENT_TIMEOUT"
"VAULT_SKIP_VERIFY"
"VAULT_NAMESPACE"
"VAULT_TLS_SERVER_NAME"
"VAULT_WRAP_TTL"
"VAULT_MAX_RETRIES"
"VAULT_TOKEN"
"VAULT_MFA"
"VAULT_RATE_LIMIT"
각 변수의 사용에 대한 자세한 문서는 여기에서 찾을 수 있어요.