Использование 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 записи имеют другой синтаксис, чем остальная часть файла. По этой причине необходимо перечислить все известные ключи в файле, чтобы сопоставить их с соответствующим анализатором.

Для таких объективов лучше всего делать, когда в объективе отсутствует ключ, - сообщить об этом (или, что еще лучше, отправить патч в список, в данном случае это довольно тривиально).

Ждем вашего билета / патча!

Другие вопросы по тегам