2014-09-05 41 views
3

我正在使用confd和etcd。我正在關注confd example for nginx。我把這些鑰匙在我ETCD服務:我如何獲得confd與etcd生成的密鑰字符串值

curl http://127.0.0.1:4001/v2/keys/myapp/upstream -XPUT -d dir=true 
curl http://127.0.0.1:4001/v2/keys/myapp/subdomain -XPUT -d value="myapp" 
curl http://127.0.0.1:4001/v2/keys/myapp/upstream/app2 -XPUT -d value="10.0.1.101:80" 
curl http://127.0.0.1:4001/v2/keys/myapp/upstream/app1 -XPUT -d value="10.0.1.100:80" 

這是我toml配置:

[template] 
prefix = "myapp" 
keys = [ 
    "subdomain", 
    "upstream", 
] 
owner = "nginx" 
mode = "0644" 
src = "nginx.tmpl" 
dest = "/tmp/myapp.conf" 
check_cmd = "/usr/sbin/nginx -t -c {{ .src }}" 
reload_cmd = "/usr/sbin/service nginx reload" 

而且這是我的TMPL配置。

upstream {{.subdomain}} { 
{{range $server := .upstream}} 
    #I want to get the key string value 
    server {{$sever.key}} {{$server.Value}}; 
{{end}} 
} 

server { 
    server_name {{.subdomain}}.example.com; 

    location/{ 
     proxy_pass  http://{{.subdomain}}; 
     proxy_redirect off; 
     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

在這裏,我要抓住關鍵字符串值,像APP 2APP1。我只知道如何獲得它的價值。我想要這樣做{{$ sever.key}}但它不起作用。以上配置{{$ sever.key}}是錯誤的,但我做了它來顯示我想要什麼。

這個想法可能嗎?

是否有任何用於該語法或語法的存儲單詞?

回答

2

我有同樣的問題。對於我這個代碼工作(通過你的配置):

{{range gets "/myapp/upstream/*"}} 
server {{base .Key}} {{.Value}} 
{{end}} 

對我來說,主要問題是gets功能。我在網上找到的所有示例都使用getvs,它只提供了值。 base函數只是刪除密鑰路徑的第一部分。

欲瞭解更多信息,請看these confd docs

相關問題