목표
consul 의 watch 를 활용해 kv 의 값이 변경되었을경우
이를 감지하여 커스텀 핸들러를 실행시킵니다.
handler 작성
my_handler.sh
consul kv watch 설정
watch.json
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | {"watches": [
 {
 "type": "key",
 "key": "foo/bar",
 "args": ["sh", "-c", "F:\/tool\/consul\/my_handler.sh"]
 }
 ]
 }
 
 | 
consul agent 실행
| 12
 3
 4
 
 | consul agent -dev -enable-script-checks -config-dir=./
 
 
 
 | 
log 를 통해 sh 이 실행된 결과를 확인할 수 있습니다.
에이전트를 새로 실행하여도 트리거가 발생되며, 따로 옵션이 있을거라 예상됩니다.
| 12
 
 | 2019/10/21 22:52:36 [DEBUG] http: Request GET /v1/kv/foo/bar (207.6168ms) from=127.0.0.1:507512019/10/21 22:52:36 [DEBUG] agent: watch handler '[sh -c F:/tool/consul/append.sh]' output: hello world
 
 | 
consul kv 데이터 갱신
| 12
 
 | $ consul kv put foo/bar 100Success! Data written to: foo/bar
 
 | 
log 를 통해 sh 이 실행된 결과를 확인할 수 있습니다.
| 12
 3
 
 | 2019/10/21 22:54:52 [DEBUG] http: Request PUT /v1/kv/foo/bar (997.7µs) from=127.0.0.1:507832019/10/21 22:54:52 [DEBUG] http: Request GET /v1/kv/foo/bar?index=1 (2m16.8935827s) from=127.0.0.1:50751
 2019/10/21 22:54:53 [DEBUG] agent: watch handler '[sh -c F:/tool/consul/append.sh]' output: hello world
 
 |