web-dev-qa-db-ja.com

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

これは、レンズが設定ファイルを解析できないことを示唆しているようです。 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構成オプションを網羅しているわけではないようです。これはレンズ構成を非常に脆くしませんか?レンズについては調べていませんが、ファイルの「構造」を定義するだけではどうでしょうか(たとえば、「名前の空白の値-スペースを含む」、「名前のタブのみの値-リスト-スペース-区切り」など)。等。)?レンズにすべての構成オプションを知らせなければならないのは、少し奇妙で、メンテナンスの頭痛の種のようです。

私はこれを正しく診断しましたか?もしそうなら、私はそれについて何ができますか(理想的には手でレンズを変更する必要はありませんなど)

1
dty

現在のレンズがcache_access_logパラメータをサポートしていないことを確認できます。これについて行う最善の方法は、チケットを開くことです Augeasトラックで

一部の構成ファイルはマップするのが簡単で、パターンを指定するだけです(「key = value」など)。他のエントリはよりトリッキーで、一部のエントリには特定の構文があり、他のエントリには異なる構文があります。たとえば、イカレンズの場合、http_accessまたはaclエントリの構文はファイルの他の部分とは異なります。このため、適切なパーサーにマップするには、ファイル内のすべての既知のキーをリストする必要があります。

このようなレンズの場合、レンズにキーがない場合に行う最善の方法は、それを報告することです(または、リストにパッチを送信することは、この場合は非常に簡単です)。

チケット/パッチを楽しみにしています!

1
ℝaphink