Usando Augeas para modificar a configuração do Squid

1

Estou executando squid-deb-proxy e quero alterar a configuração usando o Puppet / Augeas.

Quando eu tento isso:

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']
}

Recebo o seguinte erro do Puppet:

err: /Stage[main]/Portal::Packages::Squid-deb-proxy/Augeas[squid-deb-proxy.conf]: Could not evaluate: Save failed with return code false

Eu tentei o seguinte com 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

O que parece sugerir que a lente não pode analisar o arquivo de configuração. A linha 42 de squid-deb-proxy.conf diz:

cache_access_log /var/log/squid-deb-proxy/access.log

E cache_access_log não parece estar listado em /usr/share/augeas/lenses/dist/squid.aug .

Então ... parece-me que a lente Squid enviada com o Augeas 0.10.0 não cobre todas as opções de configuração do Squid. Isso não torna as configurações da lente tremendamente frágeis? Não olhei para as lentes, mas por que elas não definem apenas a "estrutura" do arquivo (por exemplo, "nome espaço em branco valor-inclusive-espaços" ou "nome-separadores apenas valor-lista-espaço-separado") etc)? Parece um pouco estranho, e um pouco de dor de cabeça de manutenção, ter que as lentes saberem sobre todas as opções de configuração.

Eu diagnostiquei corretamente isso? E se sim, o que posso fazer em relação a isso (idealmente sem ter que modificar a lente manualmente, etc.)

    
por dty 23.04.2012 / 13:44

1 resposta

1

Posso confirmar que a lente atual não suporta o parâmetro cache_access_log , e a melhor coisa a fazer sobre isso é abrir um ticket no trecho Augeas .

Alguns arquivos de configuração são triviais para mapear, e você pode simplesmente especificar um padrão (como "chave = valor"). Outros são mais complicados, em que algumas entradas têm uma sintaxe específica e outras têm uma sintaxe diferente. Por exemplo, no caso da lente do squid, as entradas http_access ou acl têm uma sintaxe diferente do restante do arquivo. Por esse motivo, é necessário listar todas as chaves conhecidas no arquivo para mapeá-las para o analisador correto.

Para essas lentes, a melhor coisa a fazer quando falta uma chave na lente é relatá-la (ou, melhor ainda, enviar um patch para a lista, é bastante trivial neste caso).

Aguardo seu ticket / patch!

    
por 23.04.2012 / 14:15