Использование 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
,
Итак... мне кажется, что поставка объективов Squid с Augeas 0.10.0 не охватывает все параметры конфигурации Squid. Разве это не делает конфигурации линз чрезвычайно ломкими? Я не изучал линзы, но почему они просто не определяют "структуру" файла (например, "имя-пробел-значение-включая-пробелы" или "имя табуляция-только-значение-список-пробел-разделенный", так далее.)? Кажется немного странным и немного головной болью при обслуживании, чтобы объективы знали обо всех параметрах конфигурации.
Я правильно диагностировал это? И если да, что я могу с этим поделать (в идеале, без необходимости менять объектив вручную и т. Д.)
1 ответ
Я могу подтвердить, что текущий объектив не поддерживает cache_access_log
Параметр, и лучшее, что можно с этим сделать, это открыть билет на трассе Augeas.
Некоторые конфигурационные файлы тривиальны для сопоставления, и вы можете просто указать шаблон (например, "ключ = значение"). Другие более хитры, где некоторые записи имеют определенный синтаксис, а другие - другой. Например, в случае линзы кальмара, http_access
или же acl
записи имеют другой синтаксис, чем остальная часть файла. По этой причине необходимо перечислить все известные ключи в файле, чтобы сопоставить их с соответствующим анализатором.
Для таких объективов лучше всего делать, когда в объективе отсутствует ключ, - сообщить об этом (или, что еще лучше, отправить патч в список, в данном случае это довольно тривиально).
Ждем вашего билета / патча!