kelseyhightower / confd

Manage local application configuration files using templates and data from etcd or consul
MIT License
8.35k stars 1.41k forks source link

xxx.toml 配置文件是否支持dest目录路径动态从etcdv3 获取 #871

Open zhenliangliang opened 1 year ago

zhenliangliang commented 1 year ago

我使用配置文件 在[template] dest = "/tmp/{{getv \"/nginx/path/server_name\" }}" 动态从etcd获取目标路径值,但无法成功,chatgpt说可以实现,这个能支持吗

zhenliangliang commented 1 year ago

我使用配置文件 在[template] dest = "/tmp/{{getv "/nginx/path/server_name" }}" 动态从etcd获取目标路径值,但无法成功,chatgpt说可以实现,这个能支持吗

报错信息:ERROR open /tmp/{{getv "/nginx/path/.server_name" }}236432004: no such file or directory

hubo1016 commented 1 year ago

不要听AI跟你胡说八道,他又不背KPI。confd的template文件和template resource文件是分离的,只有template文件当中可以使用go template语法,而dest是template resource的一部分。你可以尝试将文件输出到固定的位置,在template第一行额外附加一个目标路径例如# dest="/tmp/{{getv "/nginx/path/server_name" }}"或者其他适合处理的格式,然后写一个reload脚本,读取第一行里面的路径之后把文件复制过去,如果需要的话删掉第一行。

wuceyang commented 1 year ago

在nginx配置文件中,使用循环来生成server{}代码块也是一样的啊,不用动态生成文件