작업 명세의 change_script 블록
작업 명세의 change_script 블록 (change_script block in the job specification)
| 배치 | job -> group -> task -> template -> **change_script** |
|---|---|
change_script 블록은 운영자가 템플릿 변경 시 실행할 스크립트를 구성할 수 있게 해줘요. 이 블록은 템플릿 change_mode가 script로 설정된 경우에만 사용돼요.
job "docs" {
group "example" {
task "server" {
template {
source = "local/redis.conf.tpl"
destination = "local/redis.conf"
change_mode = "script"
change_script {
command = "/bin/foo"
args = ["-verbose", "-debug"]
timeout = "5s"
fail_on_error = false
}
}
}
}
}
출처: 문서
본문
change_script 매개변수 (change_script Parameters)
-
command(string: "")— 템플릿 변경 시 실행될 스크립트 또는 실행 파일의 전체 경로를 지정해요. 명령이 성공으로 간주되려면 종료 코드 0을 반환해야 해요. 경로는 드라이버에 상대적이에요. 예를 들어 컨테이너 드라이버로 실행한다면 경로가 컨테이너 안에 존재해야 해요.change_mode가script라면 이 옵션이 필요해요. -
args(array<string>: [])— 템플릿 변경 시 실행될 스크립트에 전달되는 인수 목록. -
timeout(string: "5s")—"30s"나"1h"같은 레이블 접미사를 사용해 지정하는 스크립트 실행 타임아웃. -
fail_on_error(bool: false)—true면 스크립트 실행이 실패할 때 Nomad가 태스크를 종료해요.false면 스크립트 실패가 로그로 기록되지만 태스크는 중단 없이 계속돼요. -
run_on_first_render(bool:false)—true면 구성된 스크립트가 템플릿 변경 시 실행될 뿐만 아니라 초기 렌더 후에도 실행돼요.
예제 (Example)
아래는 스크립트가 다른 template 블록의 data 블록에 어떻게 내장될 수 있는지 보여주는 예제예요:
job "docs" {
group "example" {
task "server" {
template {
data = "{{key \"my_key\"}}"
destination = "local/test"
change_mode = "script"
change_script {
command = "/local/script.sh"
}
}
template {
data = <<EOF
#!/usr/bin/env bash
echo "Running change_mode script"
sleep 10
echo "Done"
EOF
destination = "local/script.sh"
perms = "777"
}
}
}
}