Consul Template Go 템플릿 함수 참조

Consul Template Go 템플릿 함수 참조

Consul Template이 Go Template 형식으로 작성된 파일을 구문 분석한다는 점과, Go가 제공하는 템플릿 함수 외에 Consul Template이 추가로 제공하는 함수들을 설명하는 참조 문서예요.

출처: 문서

본문

Consul Template은 Go Template 형식으로 작성된 파일을 구문 분석합니다. 구문에 익숙하지 않다면 Go의 문서와 예제를 읽어보세요. Go가 제공하는 템플릿 함수 외에도 Consul Template은 다음 함수들을 제공합니다.

이 페이지에서 다루는 함수 그룹은 다음과 같습니다.

API Functions

API 함수는 원격 API 호출과 상호작용하며, Consul, Vault 같은 외부 서비스와 통신합니다.

caLeaf

Consul에 단일 서비스를 나타내는 리프(leaf) 인증서를 질의합니다.

{{ caLeaf "<NAME>" }}

예를 들어:

{{ with caLeaf "proxy" }}{{ .CertPEM }}{{ end }}

는 다음을 렌더링합니다.

--BEGIN CERTIFICATE--
MIICizCCAjGgAwIBAgIBCDAKBggqhkjOPQQDAjAWMRQwEgYDVQQDEwtDb25zdWwg
...
lXcQzfKlIYeFWvcAv4cA4W258gTtqaFRDRJ2i720eQ==
--END CERTIFICATE--

가장 유용한 두 필드는 .CertPEM과 .PrivateKeyPEM입니다. 사용할 수 있는 필드의 전체 목록은 consul의 LeafCert 문서를 참조하세요.

caRoots

Consul에 모든 connect 신뢰 인증 기관(CA) 루트 인증서를 질의합니다.

{{ caRoots }}

예를 들어:

{{ range caRoots }}{{ .RootCertPEM }}{{ end }}

가장 유용한 필드는 .RootCertPEM입니다. 사용할 수 있는 필드의 전체 목록은 consul의 CARootList 문서를 참조하세요.

connect

건강 상태(health)를 기준으로 connect 가능한 서비스에 대해 Consul을 질의합니다.

{{ connect "<TAG>.<NAME>?<QUERY>@<DATACENTER>~<NEAR>|<FILTER>" }}

구문은 아래의 service 함수와 정확히 동일합니다.

{{ range connect "web" }}
server {{ .Name }} {{ .Address }}:{{ .Port }}{{ end }}

는 "web"이라는 논리적 connect 가능 서비스를 가진 모든 healthy 노드의 IP 주소를 렌더링합니다.

datacenters

Consul에 카탈로그의 모든 데이터센터를 질의합니다. 선택적으로 boolean을 지정할 수 있는데, 접근 불가능하거나 현재 리더가 없는 데이터센터를 무시하도록 지시합니다. 이 옵션을 활성화하려면 O(N+1) 연산이 필요하므로 성능이 중요한 환경에서는 권장하지 않습니다.

{{ datacenters }}
{{ datacenters true }} // 접근 불가능한 데이터센터 무시

exportedServices

주어진 파티션의 모든 내보내진(exported) 서비스에 대해 Consul을 질의합니다.

{{ exportedServices "<PARTITION>" }}

예를 들어:

{{- range $svc := (exportedServices "default") }}
    {{- range $consumer := .Consumers.Partitions }}
        {{- $svc.Service }} is exported to the {{ $consumer }} partition
    {{- end }}
{{- end }}

file

디스크의 로컬 파일 내용을 읽어 출력합니다. 파일을 읽을 수 없으면 오류가 발생합니다. 파일이 변경되면 Consul Template이 변경 사항을 감지하고 템플릿을 다시 렌더링합니다. 중첩 템플릿은 처리하지 않습니다. 중첩 템플릿을 렌더링하려면 executeTemplate을 참조하세요.

{{ file "<PATH>" }}

key

주어진 키 경로의 값에 대해 Consul을 질의합니다. 키가 존재하지 않으면 Consul Template은 키가 나타날 때까지 렌더링을 차단합니다. 차단을 피하려면 keyOrDefault 또는 keyExists를 사용하세요.

{{ key "<PATH>?<QUERY>@<DATACENTER>" }}

<QUERY> 속성은 선택 사항이며, 생략하면 default Consul 네임스페이스, default 파티션을 질의합니다. <QUERY>는 url 쿼리 매개변수 형식(예: key?ns=namespace-name&partition=partition-name)을 허용합니다. <DATACENTER> 속성은 선택 사항이며, 생략하면 로컬 데이터센터를 사용합니다.

keyExists

주어진 키 경로의 값에 대해 Consul을 질의합니다. 키가 존재하면 true를 반환하고 그렇지 않으면 false를 반환합니다. key와 달리 키가 없어도 차단하지 않으며, 흐름 제어에 유용합니다.

{{ keyExists "<PATH>@<DATACENTER>" }}

keyOrDefault

주어진 키 경로의 값에 대해 Consul을 질의합니다. 키가 존재하지 않으면 기본값을 대신 사용합니다. key와 달리 키가 없어도 차단하지 않습니다.

{{ keyOrDefault "<PATH>@<DATACENTER>" "<DEFAULT>" }}

Consul Template은 다중 단계 실행(multi-phase execution)을 사용합니다. 첫 단계에서는 Consul의 데이터가 없으므로 항상 기본값으로 폴백합니다. 이후 Consul 읽기는 다음 템플릿 패스에서 실제 값을 가져옵니다.

ls

주어진 키 경로의 모든 최상위 KV 쌍에 대해 Consul을 질의합니다.

{{ ls "<PATH>?<QUERY>@<DATACENTER>" }}
{{ range ls "service/redis" }}
  {{ .Key }}:{{ .Value }}
{{ end }}

safeLs

ls와 같지만, KV 접두사 질의가 빈/빈 값을 반환하면 템플릿 렌더링을 거부합니다. consul-template이 채우는 중요 파일(예: /root/.ssh/authorized_keys, /etc/sysconfig/iptables)을 렌더링할 때 특히 유용합니다. 빈 접두사에 safeLs를 사용하면 템플릿 출력이 전혀 렌더링되지 않습니다.

node

카탈로그의 노드에 대해 Consul을 질의합니다. <NAME>은 선택 사항이며, 생략하면 로컬 에이전트 노드를 사용합니다. TaggedAddresses나 Meta 같은 맵 데이터에 접근하려면 Go의 text/template 맵 인덱싱을 사용하세요.

{{ node "<NAME>?<QUERY>@<DATACENTER>" }}

nodes

카탈로그의 모든 노드에 대해 Consul을 질의합니다. <NEAR> 속성은 선택 사항이며, 생략하면 어휘 순서로 결과가 지정됩니다. 노드 이름을 제공하면 해당 노드까지의 왕복 시간이 가장 짧은 순서로 정렬되고, _agent를 제공하면 로컬 에이전트까지의 왕복 시간이 가장 짧은 순서로 정렬됩니다.

{{ nodes "?<QUERY>@<DATACENTER>~<NEAR>" }}

partitions

Consul에 모든 파티션을 질의합니다.

{{ range partitions }}
{{ .Name }}
{{ end }}

peerings

Consul에 모든 피어링(peering)을 질의합니다.

{{ peerings "?<QUERY>" }}

<QUERY>는 선택 사항이며, 생략하면 default 파티션을 질의합니다. 사용할 수 있는 필드의 전체 목록은 consul의 CT-Peerings 문서를 참조하세요.

secret

주어진 경로의 시크릿에 대해 Vault을 질의합니다.

{{ secret "<PATH>" "<DATA>" }}

<DATA>는 선택 사항이며, 생략하면 vault read(HTTP GET) 요청이 됩니다. 제공하면 vault write(HTTP PUT/POST) 요청이 됩니다.

간단한 읽기 예:

{{ with secret "secret/passwords" }}
{{ .Data.wifi }}{{ end }}

버전 읽기(KV 버전 2 백엔드) 예:

{{ with secret "secret/passwords?version=1" }}
{{ .Data.data.wifi }}{{ end }}

?version을 생략하면 시크릿의 최신 버전을 가져옵니다. KV v2 백엔드 사용에 대한 자세한 내용은 Vault 문서를 참조하세요.

PKI 인증서를 생성하는 쓰기 예:

{{ with secret "pki/issue/my-domain-dot-com" "common_name=foo.example.com" }}
{{ .Data.certificate }}{{ end }}

파생 Vault 토큰을 추가(쓰기)하면서 읽어오는 예:

{{with secret "/auth/token/create" "policies=policy_1" "no_default_policy=true"}}
{{.Auth.ClientToken}}{{ end }}

매개변수는 key=value 쌍이어야 하며, 각 쌍은 함수의 자체 인수여야 합니다. 시크릿 내용을 디스크에 평문으로 두는 것의 보안 영향을 항상 고려하세요. 또한 Vault는 차단 질의(blocking query)를 지원하지 않으므로, 시크릿이 변경되어도 Consul Template이 즉시 다시 로드되지 않습니다. Consul Template은 Vault의 Renewer API로 시크릿을 갱신합니다.

Vault와 상호작용하는 템플릿에서는 error_on_missing_key를 활성화하는 것을 고려하세요.

template {
  error_on_missing_key = true
}

또한 if 또는 with 블록을 사용해 빈 값을 방지할 수 있습니다.

{{ with secret "secret/foo"}}
{{ if .Data.password }}
password = "{{ .Data.password }}"
{{ end }}
{{ end }}

secrets

주어진 경로의 시크릿 목록에 대해 Vault을 질의합니다. 모든 엔드포인트가 목록을 지원하는 것은 아닙니다. KV-V2 시크릿 엔진에서는 .Data를 .Data.data로 바꿔야 합니다.

{{ secrets "<PATH>" }}

pkiCert

Vault에 PKI 인증서를 질의합니다. 인증서 PEM을 문자열로 인코딩해 반환하며, Cert, CA, Key 필드로 PKI 인증서, CA, 시크릿 키를 반환합니다.

특별 참고: 이 함수는 템플릿 파일의 대상(destination)을 인증서 캐시로 사용하여 Consul-Template이 리로드나 재시작 시 인증서를 다시 가져오지 않도록 합니다. Vault의 PKI 동작은 현재 인증서가 유효해도 항상 새 인증서를 반환하므로, 대상 파일을 로컬 "캐시"로 사용하면 로컬 파일에서 인증서를 찾아 유효 기간을 확인하고, 만료된 경우에만 새 인증서를 가져올 수 있습니다.

{{ with pkiCert "pki/issue/my-domain-dot-com" "common_name=foo.example.com" }}
Certificate: {{ .Cert }}
Private Key: {{ .Key }}
Cert Authority: {{ .CA }}
{{ end }}

writeToFile 함수와 함께 사용해 키와 인증서를 템플릿에서 별도 파일로 쓸 수 있습니다.

{{- with pkiCert "pki/issue/my-domain-dot-com" "common_name=foo.example.com" -}}
{{ .Cert }}{{ .CA }}{{ .Key }}
{{ .Key | writeToFile "/my/path/to/cert.key" "root" "root" "0400" }}
{{ .CA | writeToFile "/my/path/to/cert.pem" "root" "root" "0644" }}
{{ .Cert | writeToFile "/my/path/to/cert.pem" "root" "root" "0644" "append" }}
{{- end -}}

service

건강 상태를 기준으로 서비스에 대해 Consul을 질의합니다.

{{ service "<TAG>.<NAME>?<QUERY>@<DATACENTER>~<NEAR>|<FILTER>" }}

<TAG>는 선택 사항이며, 생략하면 모든 노드를 질의합니다. <QUERY>는 선택 사항이며, 네임스페이스, 파티션, 같음 그룹(sameness group), 피어(peer)를 설정하는 데 사용할 수 있습니다. <NEAR>는 선택 사항이며, 노드 이름 또는 _agent를 제공해 왕복 시간 순서로 정렬할 수 있습니다. <FILTER>는 선택 사항이며, 생략하면 healthy 서비스만 반환합니다.

sameness-group 쿼리 매개변수를 사용할 때 규칙: partition은 Sameness Group 설정 항목이 저장된 위치를 나타내고, ns는 무시됩니다. peer 또는 partition 중 하나만 사용할 수 있으며 둘 다는 사용할 수 없습니다.

예:

{{ range service tag1.web@east-aws }}
server {{ .Name }} {{ .Address }}:{{ .Port }}{{ end }}

기본적으로 healthy 서비스만 반환됩니다. 모든 서비스를 나열하려면 "any" 필터를 전달합니다.

{{ service "web|any" }}

특정 건강 상태 집합으로 필터링하려면 쉼표로 구분된 상태 목록을 지정합니다.

{{ service "web|passing,warning" }}

쉼표는 "and"가 아닌 "or"를 의미함에 유의하세요.

참고: 태그를 구분할 때 점(dot .)을 사용하기 때문에 service 명령은 점을 포함한 서비스 이름을 인식하지 못합니다.

참고: 다음 두 호출 사이에는 구조적인 차이가 있습니다:

{{ service "web" }}
{{ service "web|passing" }}

전자는 Consul이 "healthy"하고 passing으로 간주하는 모든 서비스를 반환합니다. 후자는 Consul 에이전트에 등록된 모든 서비스를 반환하고 클라이언트 측 필터링을 수행합니다. 일반적으로 healthy 서비스만 원한다면 "passing" 인수를 단독으로 사용하지 말고 두 번째 인수를 생략하세요.

services

카탈로그의 모든 서비스에 대해 Consul을 질의합니다.

{{ services "?<QUERY>@<DATACENTER>" }}

tree

주어진 키 경로의 모든 KV 쌍에 대해 Consul을 질의합니다. ls와 달리 tree는 접두사 아래의 모든 키를 반환합니다.

{{ tree "<PATH>@<DATACENTER>" }}

safeTree

tree와 같지만, KV 접두사 질의가 빈/빈 값을 반환하면 템플릿 렌더링을 거부합니다. 빈 접두사에 safeTree를 사용하면 템플릿 출력이 전혀 렌더링되지 않습니다.

Scratch

스크래치패드(줄여서 "scratch")는 템플릿 컨텍스트 내에서 임시 데이터나 계산을 저장하는 데 사용할 수 있습니다. 스크래치 데이터는 템플릿 간에 공유되지 않으며 호출 간에 캐시되지 않습니다.

  • scratch.Key — 이름이 붙은 키에 스크래치패드 데이터가 존재하면 boolean을 반환합니다. 해당 키의 데이터가 nil이어도 true를 반환합니다.
  • scratch.Get — 이름이 붙은 키의 스크래치패드 값을 반환합니다. 데이터가 없으면 nil을 반환합니다.
  • scratch.Set — 주어진 키에 값을 저장합니다. 이미 데이터가 있으면 덮어씁니다.
  • scratch.SetX — Set과 동일하지만 값이 이미 존재하면 덮어쓰지 않습니다.
  • scratch.MapSet — 맵의 이름이 붙은 키에 값을 저장합니다. 이미 데이터가 있으면 덮어씁니다.
  • scratch.MapSetX — MapSet과 동일하지만 값이 이미 존재하면 덮어쓰지 않습니다.
  • scratch.MapValues — 이름이 붙은 맵의 모든 값을 (키 기준으로) 정렬된 목록으로 반환합니다.

Helper Functions

API 함수와 달리 헬퍼 함수는 원격 서비스를 질의하지 않습니다. 데이터 구문 분석, 데이터 포맷, 계산 등에 유용합니다.

인코딩/디코딩

  • base64Decode — base64 인코딩 문자열을 받아 디코딩된 결과(또는 잘못된 base64면 오류)를 반환합니다.
  • base64Encode — 문자열을 받아 base64 인코딩 문자열을 반환합니다.
  • base64URLDecode — base64 URL-safe 인코딩 문자열을 받아 디코딩된 결과를 반환합니다.
  • base64URLEncode — 문자열을 받아 base64 URL-safe 인코딩 문자열을 반환합니다.

그룹화

  • byKey — tree 호출에서 반환된 쌍 목록을 받아 최상위 디렉터리별로 그룹화하는 맵을 만듭니다. 최상위 키는 Key 값에서 제거되며, 제거 후 접두사가 없는 키는 목록에서 제거됩니다. 결과 쌍은 맵으로 키가 지정되므로 키로 단일 값을 조회할 수 있습니다.
  • byTag — service 또는 services 함수가 반환한 서비스 목록을 받아 태그별로 그룹화하는 맵을 만듭니다.
  • byMeta — service가 반환한 서비스 목록을 받아 ServiceMeta 값별로 그룹화하는 맵을 반환합니다. 여러 서비스 메타 키는 쉼표로 구분된 문자열로 전달할 수 있고, 메타 키에 |int를 붙여 숫자를 printf "%05d" % value 형식의 패딩 숫자로 변환할 수 있습니다(Go Template이 맵을 키 기준으로 정렬하므로 정렬에 유용). 예:
{{ service "redis|any" | byMeta "environment,shard_number|int" | toJSON }}

멤버십 테스트

  • contains — 반복 가능한 요소 내에 바늘이(needle) 있는지 결정합니다.
  • containsAll — 모든 바늘이 반복 가능한 요소 내에 있으면 true, 그렇지 않으면 false를 반환합니다. 바늘 목록이 비어 있으면 true를 반환합니다.
  • containsAny — 어떤 바늘이라도 반복 가능한 요소 내에 있으면 true, 그렇지 않으면 false를 반환합니다. 바늘 목록이 비어 있으면 false를 반환합니다.
  • containsNone — 어떤 바늘도 반복 가능한 요소 내에 없으면 true, 그렇지 않으면 false를 반환합니다. 바늘 목록이 비어 있으면 true를 반환합니다.
  • containsNotAll — 어떤 바늘이 반복 가능한 요소 내에 없으면 true, 그렇지 않으면 false를 반환합니다. 바늘 목록이 비어 있으면 false를 반환합니다.

환경 변수

  • env — 현재 프로세스에서 접근 가능한 주어진 환경 변수를 읽습니다. 파이프라인으로 연결해 출력을 조작할 수 있습니다. 변수가 없거나 비어 있으면 기본값을 사용하려면 or를 사용합니다.
  • mustEnv — 현재 프로세스에서 접근 가능한 주어진 환경 변수를 읽습니다. 변수가 정의되지 않았거나 비어 있으면 대체가 오류와 함께 실패합니다.
  • envOrDefault — 현재 프로세스에서 접근 가능한 주어진 환경 변수를 읽습니다. 환경 변수가 발견되면(빈 값 포함) 그 값을 사용하고, 그렇지 않으면 기본값을 사용합니다.

환경 변수가 있는데 비어 있을 때 기본값을 쓰려면 일반 env와 or를 사용할 수 있습니다. Go 템플릿은 빈 문자열("")을 false로 해석한다는 점을 활용합니다.

{{ or (env "TIMEOUT_CONNECT") "5s" }}

템플릿/구조

  • executeTemplate — 정의된 템플릿을 실행하고 반환합니다. 새 문맥으로 여러 번 호출하거나 변수에 저장할 수 있습니다.
  • explode — tree 또는 ls 호출 결과를 받아 구문 분석/탐색용 계층 중첩 맵으로 변환합니다. 폭발 후 키-쌍에 대한 메타데이터는 잃게 됩니다. 중첩 값에도 접근할 수 있습니다(예: {{ .a.b.c }}).
  • explodeMap — explode와 같은 논리를 사용해 맵 값을 계층 중첩 맵으로 변환합니다.
  • indent — 줄마다 N개의 공백을 접두사로 붙여 텍스트 블록을 들여씁니다.
  • loop — 가변 매개변수를 받으며 매개변수에 따라 동작이 달라집니다. 정수 하나를 주면 0에서 시작해 해당 정수 미만까지 반복하는 goroutine을 반환합니다. 정수 두 개를 주면 첫 번째 정수에서 시작해 두 번째 정수 미만까지 반복합니다. 함수가 슬라이스가 아닌 goroutine을 반환하므로 인덱스와 요소를 모두 얻는 것은 불가능합니다.
  • join — 주어진 문자열 목록을 파이프로 받아 제공된 문자열로 연결합니다.
  • mergeMap — explode 결과와 폭발된 인수를 받아 두 맵을 병합합니다. 인수의 소스는 파이프된 맵에 의해 덮어쓰이지 않습니다.
  • mergeMapWithOverride — explode 결과와 폭발된 인수를 받아 두 맵을 병합합니다. 인수의 소스는 파이프된 맵에 의해 덮어씁니다.

문자열 다듬기

  • trimSpace — 제공된 입력에서 모든 공백, 탭, 줄바꿈을 다듬습니다.
  • trim — 제공된 입력에서 모든 앞·뒤 유니코드를 다듬습니다.
  • trimPrefix — 제공된 입력에서 앞 접두사 문자열을 다듬습니다.
  • trimSuffix — 제공된 입력에서 뒤 접미사 문자열을 다듬습니다.

구문 분석

  • parseBool — 주어진 문자열을 boolean으로 구문 분석합니다.
  • parseFloat — 주어진 문자열을 base-10 float64로 구문 분석합니다.
  • parseInt — 주어진 문자열을 base-10 int64로 구문 분석합니다.
  • parseJSON — 주어진 입력(보통 키의 값)을 JSON으로 구문 분석합니다. 첫 평가에서는 키 값이 비어 있으므로 템플릿이 빈 응답을 방어해야 합니다.
  • parseUint — 주어진 문자열을 base-10 uint로 구문 분석합니다.
  • parseYAML — 주어진 입력(보통 키의 값)을 YAML로 구문 분석합니다. parseJSON에 적용되는 주의사항이 parseYAML에도 적용됩니다.

플러그인/정규식/해시

  • plugin — 플러그인 이름과 선택적 페이로드를 받아 Consul Template 플러그인을 실행합니다. 문자열을 만드는 파이프라인의 대상이 될 수도 있습니다.
  • regexMatch — 인수를 정규식으로 받아 주어진 문자열과 일치하면 true, 그렇지 않으면 false를 반환합니다.
  • regexReplaceAll — 인수를 정규식으로 받아 정규식의 모든 발생을 주어진 문자열로 바꿉니다. Go처럼 대체 문자열에서 $1 같은 변수를 사용해 하위 표현식을 참조할 수 있습니다.
  • replaceAll — 인수를 문자열로 받아 주어진 문자열의 모든 발생을 주어진 문자열로 바꿉니다.
  • sha256Hex — 인수를 문자열로 받아 sha256_hex 값을 계산합니다.
  • md5sum — 문자열 입력을 인수로 받아 입력의 hex 인코딩 md5 해시를 반환합니다.
  • hmacSHA256Hex — 키와 메시지를 문자열 입력으로 받아 주어진 매개변수로 hex 인코딩 HMAC-SHA256 해시를 반환합니다.

분할

  • split — 주어진 문자열을 제공된 구분 기호로 분할합니다. 다른 함수와 체인·파이프로 연결할 수 있습니다.
  • splitToMap — 주어진 문자열을 제공된 구분 기호로 분할하고 각 결과 항목을 키와 값으로 분할합니다.

시간/변환

  • timestamp — 문자열(UTC)로 현재 타임스탬프를 반환합니다. 인수가 없으면 현재 RFC3339 타임스탬프입니다. 선택 매개변수로 포맷을 지정하며, 마법 참조 날짜 Mon Jan 2 15:04:05 -0700 MST 2006를 사용할 수 있습니다. 특별한 경우 "unix"를 주면 초 단위의 unix 타임스탬프가 문자열로 반환됩니다.
  • toJSON — tree 또는 ls 호출 결과를 JSON 객체로 변환합니다. Consul은 모든 KV 데이터를 문자열로 저장하므로 true는 "true", 1은 "1"임을 유의하세요.
  • toJSONPretty — 결과를 두 칸 들여쓰기된 보기 좋은 JSON 객체로 변환합니다.
  • toUnescapedJSON — HTML 이스케이프 없이 JSON 객체로 변환합니다. 쿼리 매개변수가 포함된 DB 연결 문자열이나 URI를 다룰 때 유용합니다.
  • toUnescapedJSONPretty — HTML 이스케이프 없이 두 칸 들여쓰기된 보기 좋은 JSON 객체로 변환합니다.
  • toLower — 문자열을 소문자로 변환합니다.
  • toTitle — 문자열을 타이틀 케이스로 변환합니다.
  • toTOML — 결과를 TOML로 변환합니다.
  • toUpper — 문자열을 대문자로 변환합니다.
  • toYAML — 결과를 YAML로 변환합니다.
  • sockaddr — hashicorp/go-sockaddr 템플릿 함수를 제공합니다.
  • writeToFile — 문자열 파이프라인의 결과를 파일에 씁니다.

Sprig Functions

Consul Template은 템플릿에서 많은 Sprig 함수를 제공합니다. 모든 함수 목록은 Sprig 함수 문서에서 확인할 수 있습니다.

Math Functions

숫자 계산을 위한 함수들입니다.

  • add — 합계를 계산합니다.
  • subtract — 차이를 계산합니다.
  • multiply — 곱을 계산합니다.
  • divide — 몫을 계산합니다.
  • modulo — 나머지를 계산합니다.
  • minimum — 최솟값을 계산합니다.
  • maximum — 최댓값을 계산합니다.

Nomad Functions

Nomad 서비스 및 변수와 상호작용하는 함수들입니다.

  • nomadServices — Nomad에 서비스 목록을 질의합니다.
  • nomadService — Nomad에 단일 서비스를 질의합니다.

Nomad Variables

  • nomadVarList — 주어진 경로 아래의 Nomad 변수 목록을 질의합니다.
  • nomadVarListSafe — 주어진 경로 아래의 변수 목록을 질의하며, 결과가 없으면 렌더링을 거부합니다.
    • NomadVarMeta 타입 — 변수 목록 응답 내 메타데이터를 나타냅니다.
  • nomadVar — 주어진 경로의 Nomad 변수를 질의합니다.
    • NomadVarItems 타입 — 변수 응답 내 항목 맵을 나타냅니다.
    • NomadVarItem 타입 — 변수 응답 내 단일 항목을 나타냅니다.
  • nomadVarExists — 주어진 경로에 변수가 존재하는지 여부를 확인합니다.

Debugging Functions

Go용 go-spew 패키지 기반의 디버깅 함수들입니다.

  • spew_dump — 객체를 전체 깊이로 덤프합니다.
  • spew_sdump — 문자열로 덤프합니다.
  • spew_printf — 지정된 포맷으로 Printf합니다.
  • spew_sprintf — 지정된 포맷으로 Sprintf합니다.

sprintf/printf는 Go의 표준 프린트 포맷 동사를 사용합니다.

더 알아보기 (Learn more)