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"

각 변수의 사용에 대한 자세한 문서는 여기에서 찾을 수 있어요.

더 알아보기 (Learn more)