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