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
これは、レンズが設定ファイルを解析できないことを示唆しているようです。 squid-deb-proxy.conf
の42行目は次のようになっています。
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構成オプションを網羅しているわけではないようです。これはレンズ構成を非常に脆くしませんか?レンズについては調べていませんが、ファイルの「構造」を定義するだけではどうでしょうか(たとえば、「名前の空白の値-スペースを含む」、「名前のタブのみの値-リスト-スペース-区切り」など)。等。)?レンズにすべての構成オプションを知らせなければならないのは、少し奇妙で、メンテナンスの頭痛の種のようです。
私はこれを正しく診断しましたか?もしそうなら、私はそれについて何ができますか(理想的には手でレンズを変更する必要はありませんなど)
現在のレンズがcache_access_log
パラメータをサポートしていないことを確認できます。これについて行う最善の方法は、チケットを開くことです Augeasトラックで 。
一部の構成ファイルはマップするのが簡単で、パターンを指定するだけです(「key = value」など)。他のエントリはよりトリッキーで、一部のエントリには特定の構文があり、他のエントリには異なる構文があります。たとえば、イカレンズの場合、http_access
またはacl
エントリの構文はファイルの他の部分とは異なります。このため、適切なパーサーにマップするには、ファイル内のすべての既知のキーをリストする必要があります。
このようなレンズの場合、レンズにキーがない場合に行う最善の方法は、それを報告することです(または、リストにパッチを送信することは、この場合は非常に簡単です)。
チケット/パッチを楽しみにしています!