2014-09-05 6 views
3

confd와 etcd를 사용하고 있습니다. 나는 confd example for nginx을 팔로우하고 있습니다.어떻게하면 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 구성입니다 : : 내 etcd 서비스에서 이러한 키를 넣어

[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; 
    } 
} 

여기에 내가 APP2 또는 APP1처럼 키 문자열 값을 잡으려고합니다. 나는 그 가치를 얻는 방법을 알고 있습니다. 나는이 {{$의 sever.key}}에하지만이 작동하지 않는 등의 일을하고 싶습니다. {{$의 sever.key}} 위의 구성은 잘못하지만 난 내가 원하는 무엇을 보여주기 위해 그것을했다.

이 아이디어가 가능합니까?

해당 구문에 대한 임의의 단어가 있습니까?

답변

2

나는 동일한 문제가있었습니다. 나를 위해이 코드는 (당신의 설정에 채택) 일 : 나를 위해

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

의 주요 문제는 gets 기능이었다. 그물에있는 모든 예제는 값만 제공하는 getvs을 사용했습니다. base 함수는 키 경로의 첫 부분 만 제거합니다.

자세한 내용은 these confd docs을 참조하십시오.