我正在运行squid-deb-proxy ,我想用Puppet / Augeas来改变configuration。
当我尝试这个:
augeas {'squid-deb-proxy.conf': lens => 'Squid.lns', incl => '/etc/squid-deb-proxy/squid-deb-proxy.conf', changes => ["set http_port 3129"], require => Package['squid-deb-proxy'] }
我从Puppet得到以下错误:
err: /Stage[main]/Portal::Packages::Squid-deb-proxy/Augeas[squid-deb-proxy.conf]: Could not evaluate: Save failed with return code false
我用augtool尝试了以下augtool :
augtool> rm /augeas/load/* rm : /augeas/load/* 867 augtool> set /augeas/load/Squid/lens Squid.lns augtool> set /augeas/load/Squid/incl /etc/squid-deb-proxy/squid-deb-proxy.conf augtool> load augtool> print /augeas /augeas/root = "/" /augeas/context = "/files" /augeas/variables /augeas/version = "0.10.0" /augeas/version/save /augeas/version/save/mode[1] = "backup" /augeas/version/save/mode[2] = "newfile" /augeas/version/save/mode[3] = "noop" /augeas/version/save/mode[4] = "overwrite" /augeas/version/defvar /augeas/version/defvar/expr /augeas/version/pathx /augeas/version/pathx/functions /augeas/version/pathx/functions/count /augeas/version/pathx/functions/glob /augeas/version/pathx/functions/label /augeas/version/pathx/functions/last /augeas/version/pathx/functions/position /augeas/version/pathx/functions/regexp /augeas/save = "overwrite" /augeas/span = "disable" /augeas/load /augeas/load/Squid /augeas/load/Squid/lens = "Squid.lns" /augeas/load/Squid/incl = "/etc/squid-deb-proxy/squid-deb-proxy.conf" /augeas/files /augeas/files/etc /augeas/files/etc/squid-deb-proxy /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/path = "/files/etc/squid-deb-proxy/squid-deb-proxy.conf" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/mtime = "1335175492" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/lens = "Squid.lns" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/lens/info = "/usr/share/augeas/lenses/dist/squid.aug:433.18-.95:" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/error = "parse_failed" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/error/pos = "1449" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/error/line = "42" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/error/char = "0" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/error/lens = "/usr/share/augeas/lenses/dist/squid.aug:433.18-.95:" /augeas/files/etc/squid-deb-proxy/squid-deb-proxy.conf/error/message = "Iterated lens matched less than it should" /files
这似乎表明,镜头无法parsingconfiguration文件。 squid-deb-proxy.conf第42 squid-deb-proxy.conf显示如下:
cache_access_log /var/log/squid-deb-proxy/access.log
而cache_access_log似乎没有列在/usr/share/augeas/lenses/dist/squid.aug 。
所以…在我看来,鱿鱼镜头运输与澳大利亚0.10.0不包括所有的Squidconfiguration选项。 这不会使镜头configuration变得非常脆弱吗? 我还没有研究镜头,但为什么他们不定义文件的“结构”(例如“名称空白值包括空格”或“名称标签只有值列表空格分隔”,等等。)? 这看起来有点奇怪,而且有点维护头痛,不得不让镜头知道所有的configuration选项。
我有正确的诊断吗? 如果是这样,我能做些什么(理想情况下不需要手动修改镜头等)
我可以确认当前的镜头不支持cache_access_log参数,最好的办法是在Augeas trac上打开一张票。
一些configuration文件是微不足道的映射,你可以指定一个模式(如“键=值”)。 其他的则比较棘手,其中一些条目具有特定的语法,而其他条目则不同。 例如,对于鱿鱼镜头, http_access或acl条目与文件的其余部分有不同的语法。 出于这个原因,有必要列出文件中的所有已知密钥,以将它们映射到正确的parsing器。
对于这样的镜头,当镜头中缺less一个键时,最好的办法是报告(甚至更好,将清单发送到清单,在这种情况下是相当简单的)。
期待您的票/补丁!