Squid
使用 Augeas 修改 Squid 配置
我正在跑步
squid-deb-proxy
,我想使用 Puppet/Augeas 更改配置。當我嘗試這個時:
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> 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
這似乎表明鏡頭無法解析配置文件。第 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
.所以……在我看來,Augeas 0.10.0 隨附的 Squid 鏡頭並未涵蓋所有 Squid 配置選項。這不會使鏡頭配置變得非常脆弱嗎?我沒有研究過鏡頭,但他們為什麼不只定義文件的“結構”(例如“名稱空白值-包括-空格”或“名稱製表符-僅值-列表-空格分隔”, ETC。)?必須讓鏡頭了解所有配置選項,這似乎有點奇怪,而且有點讓人頭疼。
我是否正確診斷了這一點?如果是這樣,我能做些什麼(理想情況下不必手動修改鏡頭等)
我可以確認目前鏡頭不支持該
cache_access_log
參數,最好的辦法確實是在 Augeas trac 上開一張票。一些配置文件很容易映射,你可以只指定一個模式(例如“key = value”)。其他的則更棘手,其中一些條目具有特定的語法,而另一些則具有不同的語法。例如,在 squid 鏡頭的情況下,
http_access
或acl
條目的語法與文件的其餘部分不同。因此,有必要列出文件中的所有已知鍵,以將它們映射到正確的解析器。對於這樣的鏡頭,當鏡頭中缺少某個鍵時,最好的辦法是報告它(或者更好的是,向列表發送更新檔,在這種情況下非常簡單)。
期待你的票/更新檔!