Nomad 변수 생성 및 업데이트
Nomad 변수 생성 및 업데이트 (Create and update Nomad variables)
이 페이지는 Nomad 변수와 상호작용하는 프로세스를 설명해요. nomad var 명령 레퍼런스 또는 Vars HTTP API를 사용해 Nomad 변수를 관리하세요.
출처: 문서
본문
배경 (Background)
Nomad 변수는 파일과 유사한 경로에 구성을 Nomad의 상태 저장소에 직접 안전하게 저장하는 옵션을 제공해요. Nomad 변수 기능과 관련 개념에 대한 완전한 문서는 다음을 참고하세요:
Nomad는 Nomad 변수를 네임스페이스로 범위를 지정하고 ACL 정책에 따라 Nomad 변수에 대한 접근을 허용해요.
Nomad 변수 스펙 생성 (Generate a Nomad variable specification)
nomad var init 명령을 사용해 사용자 정의할 수 있는 Nomad 변수 스펙을 생성하세요.
현재 디렉터리에 예시 변수 스펙을 생성하세요.
$ nomad var init
Example variable specification written to spec.nv.hcl
Nomad 변수 추가 및 업데이트 (Add and update Nomad variables)
nomad var put 명령을 사용해 Nomad 변수를 생성·업데이트하세요. Nomad 변수 스펙 파일, 키-값 쌍 묶음, 또는 둘 다를 포함해 변수 항목을 제공해요. 키와 값의 형식 지정에 대한 세부 사항은 nomad var put 명령 레퍼런스를 참고하세요. 커맨드 라인 인자로 제공하는 값은 명령에 파이프되거나 파일에서 로드된 변수 스펙의 어떤 값보다 우선해요.
또한 nomad var put 명령을 사용해 변수의 모든 항목을 덮어쓸 수 있어요. 마지막으로 변수를 읽은 이후 발생했을 수 있는 다른 쓰기와 충돌을 피하려면 -check-index 플래그를 사용하고 그것을 마지막 수정 인덱스로 설정해야 해요.
이 예시는 Nomad 변수 passcode=my-long-passcode와 user=me를 경로 secret/foo에 써요. 변수는 prod 네임스페이스로 범위가 지정돼요.
$ nomad var put -namespace prod secret/foo passcode=my-long-passcode user=me
이 예시는 "@" 기호로 접두사가 붙은 Nomad 변수 스펙 파일을 사용해요.
$ nomad var put -namespace prod secret/foo @spec.nv.json
하이픈(-)을 사용해 표준 입력에서 변수 값을 읽도록 명령에 지시할 수 있어요. -out 옵션은 명령의 출력을 표시해요.
$ echo "abcd1234" | nomad var put -namespace prod -out secret/foo bar=-
Namespace = prod
Path = secret/foo
Create Time = 2025-11-19T11:21:56-04:00
Check Index = 28
Items
bar = abcd1234
이 예시는 secret/foo 경로의 bar 값을 업데이트하고 업데이트된 변수를 JSON 형식으로 출력해요. Nomad 변수를 업데이트할 때는 check-index 값을 포함해야 해요.
$ nomad var put -namespace prod -out json -check-index 28 secret/foo bar=efgh5678
출력은 다음 스니펫과 유사해요.
{
"Namespace": "prod",
"Path": "secret/foo",
"CreateIndex": 28,
"ModifyIndex": 39,
"CreateTime": 1663600883130070567,
"ModifyTime": 1663601343585644939,
"Items": {
"bar": "efgh5678",
}
}
Nomad 변수 삭제 (Delete Nomad variables)
nomad var purge 명령을 사용해 기존 변수를 영구 삭제하세요.
secret/foo 경로의 모든 변수를 삭제하세요.
$ nomad var purge secret/foo
Nomad 변수 조회 (Query Nomad variables)
Get
nomad var get 명령을 사용해 기존 변수의 내용을 가져오세요.
이 예시는 경로 secret/foo에 저장된 변수를 검색해요.
$ nomad var get secret/foo
Namespace = default
Path = secret/foo
Create Time = 2025-11-23T11:14:37-04:00
Check Index = 116
Items
passcode = my-long-passcode
secret/foo에 저장된 변수에서 passcode 항목만 반환하세요.
$ nomad var get -item=passcode secret/foo
my-long-passcode
List
nomad var list 명령을 사용해 접근 가능한 변수 경로 목록을 가져오세요.
prod 네임스페이스의 변수를 나열하세요.
$ nomad var list -namespace prod
Namespace Path Last Updated
prod project/another-example 2025-09-19T11:21:56-04:00
prod project/example 2025-09-19T11:29:03-04:00
접두사 필터 project/ex와 일치하는 prod 네임스페이스의 변수를 나열하세요.
$ nomad var list -namespace prod project/ex
Namespace Path Last Updated
prod project/example 2025-09-19T11:29:03-04:00
와일드카드 네임스페이스 표시(*)를 사용해 접근할 수 있는 모든 변수를 나열하세요. 많은 셸에서 * 문자는 의미가 있으므로 큰 따옴표(") 또는 작은 따옴표(')로 감싸야 할 수 있어요.
$ nomad var list -namespace '*'
Namespace Path Last Updated
dev another-project/example 2022-09-19T11:29:54-04:00
dev project/example 2022-09-19T11:29:54-04:00
dev system/config 2022-09-19T11:29:54-04:00
prod project/another-example 2022-09-19T11:21:56-04:00
prod project/example 2022-09-19T11:29:03-04:00
nomad/jobs 키 아래의 값을 나열하세요.
$ nomad var list nomad/jobs
Namespace Path Last Updated
default nomad/jobs/example 2022-08-23T10:35:47-04:00
default nomad/jobs/variable 2022-08-23T10:24:45-04:00
default nomad/jobs/variable/www 2022-08-23T10:24:45-04:00
default nomad/jobs/variable/www/nginx 2022-08-23T10:24:46-04:00
nomad/jobs/variable/www 키 아래의 값을 JSON 형식으로 나열하세요.
$ nomad var list -out=json -namespace="*" nomad/jobs/variable/www
[
{
"Namespace": "default",
"Path": "nomad/jobs/variable/www",
"CreateIndex": 1457,
"ModifyIndex": 1457,
"CreateTime": 1662061225600373000,
"ModifyTime": 1662061225600373000
},
{
"Namespace": "default",
"Path": "nomad/jobs/variable/www/nginx",
"CreateIndex": 800,
"ModifyIndex": 1000,
"CreateTime": 1662061717905426000,
"ModifyTime": 1662062162982630000
}
]
페이지네이션 쿼리를 수행하세요.
$ nomad var list -per-page=3
Namespace Path Last Updated
default nomad/jobs/example 2022-08-23T10:35:47-04:00
default nomad/jobs/variable 2022-08-23T10:24:45-04:00
default nomad/jobs/variable/www 2022-08-23T10:24:45-04:00
Next page token: default.nomad/jobs/variable/www/nginx
다음 페이지를 가져오려면 다음 페이지 토큰을 포함하세요.
$ nomad var list -per-page=3 \
-page-token=default.nomad/jobs/variable/www/nginx
Namespace Path Last Updated
default nomad/jobs/variable/www/nginx 2022-08-23T10:24:46-04:00
JSON 형식의 페이지네이션 쿼리를 수행하세요.
$ nomad var list -out=json -namespace="*" -per-page=1 nomad/jobs/variable/www
{
"Data": [
{
"Namespace": "default",
"Path": "nomad/jobs/variable/www",
"CreateIndex": 1457,
"ModifyIndex": 1457,
"CreateTime": 1662061225600373000,
"ModifyTime": 1662061225600373000
}
],
"QueryMeta": {
"KnownLeader": true,
"LastContact": 0,
"LastIndex": 43,
"NextToken": "default.nomad/jobs/variable/www/nginx",
"RequestTime": 875792
}
}
표 형식 버전과 마찬가지로 QueryMeta.NextToken 값을 -page-token 값으로 제공해 다음 페이지를 가져오세요.
Nomad 변수에 접근 잠금 (Lock access to a Nomad variable)
nomad var lock 명령은 분산 잠금 메커니즘을 제공해요. Nomad는 주어진 변수에 잠금을 만들고, 잠금이 보유된 경우에만 지정된 자식 프로세스를 호출해요.
경로 secret/foo의 변수를 15초 동안 잠그세요. 잠금이 성공하면 nomad job run webapp.nomad.hcl을 실행하세요.
$ nomad var lock -ttl=15s secret/foo "nomad job run webapp.nomad.hcl"
"@" 기호로 접두사가 붙은 파일을 전달할 수도 있어요. 이 예시는 spec.nv.json 파일의 변수를 저장하고 잠가요. 잠금이 성공하면 nomad job run webapp.nomad.hcl을 실행하세요.
$ nomad var lock secret/foo @spec.nv.json `nomad job run webapp.nomad.hcl`
다음 단계 (Next steps)
심도 있는 학습을 위해 다음 Nomad 변수 튜토리얼을 참고하세요:
- Create and update Nomad variables에 Nomad 변수 업데이트를 위한 고급 예시가 포함돼 있어요.
- Configure access control for Nomad variables는 Nomad 변수에 대한 ACL 정책 구성 방법을 보여줘요.
잡 스펙에서 Nomad 변수에 접근하는 방법을 배우려면 Use Nomad variables in tasks를 참고하세요.