1

confd環境に応じて構成ファイルをレンダリングするために使用しています

$ ls -R /etc/confd
/etc/confd/:
conf.d  templates

/etc/confd/conf.d:
my_app.toml

/etc/confd/templates:
my_app.tmpl

私の構成:

$ cat /etc/confd/conf.d/my_app.toml
[template]
src = "my_app.tmpl"
dest = "/etc/nginx/sites-enabled/my_app.conf"
$ cat /etc/confd/templates/my_app.tmpl
# ...
    location @rewriteapp {
        rewrite ^(.*)$ /{{ getenv "/app/entry/point" }}/$1 last;
    }
# ...

confdよく走る

$ export APP_ENTRY_POINT="app_dev.php"
$ confd -onetime -backend env
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Backend set to env
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Starting confd
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Backend nodes set to
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Target config /etc/nginx/sites-enabled/my_app.conf out of sync
2016-04-15T13:54:29Z 1c682a040707 /usr/local/bin/confd[44]: INFO Target config /etc/nginx/sites-enabled/my_app.conf has been updated

しかし、生成されたファイルは変数を解決しません

$ cat /etc/nginx/sites-enabled/my_app.conf
# ...
    location @rewriteapp {
        rewrite ^(.*)$ //$1 last;
#                       ^- I should have app_dev.php between the `//`
    }
# ...
  • ここで何か間違っていますか?
  • これをデバッグするにはどうすればよいですか?
4

1 に答える 1

1

文書化されているものとは異なり、confd(0.11.0)getenv関数は環境変数をパスとして期待していないようです/app/entry/point

環境変数は実際にそのまま保持されます。APP_ENTRY_POINT

したがって、テンプレートは単に次のように言う必要があります。

$ cat /etc/confd/templates/my_app.tmpl
# ...
    location @rewriteapp {
        rewrite ^(.*)$ /{{ getenv "APP_ENTRY_POINT" }}/$1 last;
    }
# ...

何が起こっているかを確認するためのオプションがあり-debugます-verbose

于 2016-04-15T15:00:08.100 に答える