Confd是一個輕量級的配置管理工具。
經過查詢後端存儲,結合配置模板引擎,保持本地配置最新,同時具有按期探測機制,配置變動自動reload。
對應的後端存儲能夠是etcd,redis、zookeeper等等
咱們以etcd爲後端來演示confd的使用,用最簡單粗暴的方式教你們學會動態生成配置php
etcd -listen-client-urls="http://0.0.0.0:2379" --advertise-client-urls="http://0.0.0.0:2379" &
etcd搭建若是不會能夠查看前面一篇文章《從零開始搭建etcd分佈式存儲系統+web管理界面》html
# 下載 wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64 # 安裝 mv confd-0.16.0-linux-amd64 /usr/local/bin/confd chmod +x /usr/local/bin/confd #檢查是否安裝成功 root@ubuntu:/home/chenqionghe/test/confd# confd --version confd 0.16.0 (Git SHA: 7217b0ca, Go Version: go1.10.2)
咱們先建立node
mkdir -p /etc/confd/{conf.d,templates}
confd的配置文件,主要包含配置的生成邏輯,例如模板源,後端存儲對應的keys,命令執行等。
templates:配置模板Template,即基於不一樣組件的配置,修改成go語言的模板文件。linux
[template] # 模板文件路徑 src = "chenqionghe.tmpl" # 生成最終文件路徑 dest = "/home/chenqionghe/test/confd/gym-data.txt" keys = [ "/chenqionghe/deap_squat", "/chenqionghe/bench_press", "/chenqionghe/dead_lift", ] # 生成文件後執行的命令 reload_cmd = "echo 'light weight baby' >> /home/chenqionghe/test/confd/reaload.txt"
[陳瓊和] 深蹲 = {{getv "/chenqionghe/deap_squat"}} 臥槽 = {{getv "/chenqionghe/bench_press"}} 硬拉 = {{getv "/chenqionghe/dead_lift"}}
endpoints=http://127.0.0.1:2379 etcdctl --endpoints=$endpoints set /chenqionghe/deap_squat '130kg' etcdctl --endpoints=$endpoints set /chenqionghe/bench_press '100kg' etcdctl --endpoints=$endpoints set /chenqionghe/dead_lift '160kg'
confd支持以daemon或者onetime兩種模式運行
onetime模式:只會生成一次配置,以後key不管變化不會再生成nginx
confd -onetime -backend etcd -node http://127.0.0.1:2379
confd -watch -backend etcd -node http://127.0.0.1:2379 &
咱們以daemon模式運行,而後改變key的值,觀察文件變化,
能夠看到reload.txt文件在持續的追加light weight baby
git
gym-data.txt跟隨3個key的變化不斷的更新
github
confd使用的模板就是go語言的template,對go語言熟悉的同窗應該會以爲很是簡單
confd已經集成了不少模板函數,參考連接web
咱們大概知道了confd的原理
1.讀取配置文件 -> 2.使用模板生成指定文件 -> 3.運行重載命令(可選)redis
因此基本使用配置和reload命令的地方均可以使用confd,好比下邊的需求ubuntu
只有想不到,沒有作不到,之前想過本身寫一個nginx的動態生成upstream,沒想到已經有人寫出來了,真的是厲害,小夥伴們趕忙high起來吧