2014-09-05 36 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