`patch` — 기존 데이터 부분 업데이트하기

patch — 기존 데이터 부분 업데이트하기

vault patch는 지정한 경로의 데이터를 Vault에서 부분적으로 업데이트하는 명령어예요. 내부적으로는 JSON Patch 형식을 사용하는 HTTP PATCH 요청을 감싸는(wrapper) 역할을 해요. 대상 데이터는 자격증명(credential), 시크릿, 설정, 또는 임의의 데이터가 될 수 있고, 구체적인 동작은 해당 경로에 마운트된 것이 정해요.

데이터는 명령줄에서 key=value 형태로 지정해요. 값이 @로 시작하면 그 값을 파일에서 읽어오고, 값이 -이면 명령줄이 아니라 표준 입력(stdin)에서 읽어와요.

지도(map) 같은 고급 구조가 필요한 API 필드들은 명령줄에서 직접 표현할 수 없어요. 그럴 때는 유일한 데이터 인자로 -만 쓰면 돼요. 그러면 vault patch가 표준 입력에서 모든 요청 파라미터를 담은 JSON 블록을 읽어요. 단, 이 인자는 key=value 쌍과 함께 쓰이면 무시돼요.

전체 예시와 경로 목록은 사용 중인 시크릿 엔진에 해당하는 문서를 참고하세요.

write 명령어와 달리, patch 명령어는 명령줄에서 지정한 데이터만 수정해요. 기존 값은 그대로 유지된 채 요청한 필드만 바뀐다고 이해하면 돼요.

출처: 문서

본문

예시 (Examples)

PKI 역할(role)에서 한 파라미터만 수정할 때는 이렇게 해요:

$ vault patch pki/roles/example allow_localhost=false

API와 CLI 비교 (API versus CLI)

allow_localhost 파라미터를 수정하는 같은 작업을 CLI로 하면 위와 같고, API(cURL)로는 이렇게 해요:

$ tee request_payload.json -<<EOF
{
   "organization": "hashicorp"
}
EOF

$ curl --header "X-Vault-Token: $VAULT_TOKEN" \
    --request PATCH \
    --header 'Content-Type: application/merge-patch+json'
    --data @request_payload.json \
    $VAULT_ADDR/v1/pki/roles/example

vault patch 명령어가 이 API 호출을 훨씬 단순하게 만들어 줘요.

사용법 (Usage)

모든 명령어에 기본으로 포함된 표준 플래그 외에 다음 플래그들을 추가로 사용할 수 있어요.

출력 옵션 (Output options)

  • -field (string: "") — -format 지시자에 지정된 형식으로, 이름이 주어진 필드만 출력해요. 결과 끝에 줄바꿈(newline)이 붙지 않아 다른 프로세스로 파이프하기에 좋아요.
  • -format (string: "table") — 출력 형식을 지정해요. 유효한 값은 "table", "json", "yaml"이에요. VAULT_FORMAT 환경 변수로도 지정할 수 있어요.

커맨드 옵션 (Command options)

  • -force (bool: false) — key=value 쌍 없이도 작업을 진행하게 해요. 데이터가 필요 없거나 요구하지 않는 키에 기록할 때 쓰며, -f로도 별칭 사용 가능해요.

더 알아보기 (Learn more)

  • vault write — 전체 데이터 작성과 교체
  • vault read — 데이터 조회
  • vault delete — 데이터 삭제