A configuração do Puppet usando augeas falha se combinada com notificar

7

Estou tendo um problema com o seguinte manifesto de marionete, que significa para ativar o módulo passwdqc pam em um sistema RHEL-6 (isto é usando Puppet 0.25.5 e augeas 0.7.2):

augeas { 'authconfig':
        context => '/files/etc/sysconfig/authconfig',
        changes => [
                'set USEPASSWDQC yes',
                'set USECRACKLIB no',
                ],
        notify  => Exec['authconfig-all'],
}

exec { 'authconfig-all':
        command         => '/usr/sbin/authconfig --updateall',
        refreshonly     => true,
}

Se eu executar este manifesto, ele será concluído com êxito:

info: Applying configuration version '1311189237'
notice: //Augeas[authconfig]/returns: executed successfully
info: //Augeas[authconfig]: Scheduling refresh of Exec[authconfig-all]
notice: //Exec[authconfig-all]: Triggering 'refresh' from 1 dependencies

Mas se eu examinar o arquivo de destino, as alterações não foram aplicadas:

# egrep 'PASSWDQC|CRACKLIB' /etc/sysconfig/authconfig
USECRACKLIB=yes
USEPASSWDQC=no

Se eu remover a linha notify => ... do manifesto, funcionará exatamente como pretendido. Isto é, dado isto:

augeas { 'authconfig':
        context => '/files/etc/sysconfig/authconfig',
        changes => [
                'set USEPASSWDQC yes',
                'set USECRACKLIB no',
                ],
}

As alterações foram salvas com sucesso:

# puppet /path/to/manifest.pp
info: Applying configuration version '1311189502'
notice: //Augeas[authconfig]/returns: executed successfully

# egrep 'PASSWDQC|CRACKLIB' /etc/sysconfig/authconfig
USECRACKLIB=no
USEPASSWDQC=yes

Alguma ideia do que está acontecendo aqui? Obviamente, o boneco acredita que o a mudança está sendo feita na primeira vez, mas na verdade não é sendo salvo no disco. Nós temos outras configurações usando augeas e notificar operações que funcionam bem; nós não fomos capazes de descobrir por que isso está falhando. Observe que o mesmo problema existe se eu substituir notify na operação augeas por subscribe na definição exec correspondente.

Meu plano atual é criar pacotes a partir de versões mais recentes de fantoche e augeas e ver se o problema vai Magicamente ir embora.

UPDATE : o freiheit aponta que authconfig parece estar sobrescrevendo esse arquivo. Estranhamente, sob o CentOS 5, modificar /etc/sysconfig/authconfig e depois executar authconfig --updateall foi exatamente o procedimento correto. Isso é o que estamos realmente usando em nosso Kickstart legado.

Então, aparentemente, a atualização do RHEL6 fez com que authconfig se comportasse de maneiras estranhas e inúteis.

    
por larsks 20.07.2011 / 21:21

2 respostas

7

Parte da resposta é que o comportamento do comando authconfig mudou entre o RHEL5 e o RHEL6. No RHEL6, em vez de ler /etc/sysconfig/authconfig e gerar a configuração, authconfig no RHEL6 aparece para analisar cada arquivo de configuração individual que ele gerencia e, em seguida, gera /etc/sysconfig/authconfig como um registro do estado atual.

Isso significa que é necessário editar os arquivos de configuração diretamente se um deles estiver (a) tentando evitar a execução do comando authconfig ou (b) tentando aproveitar os recursos que não são suportados no authconfig linha de comando.

Isso é o que acabei para ativar o módulo passwdqc PAM:

augeas { 'pam_passwdqc':
    context => '/files/etc/pam.d/system-auth-ac/',
    changes => [
        'rm *[module="pam_cracklib.so"]',
        'ins 9999 before *[type="password"][module="pam_unix.so"]',
        'set 9999/type password',
        'set 9999/control requisite',
        'set 9999/module pam_passwdqc.so',
        'set 9999/argument enforce=everyone',
    ],
    onlyif  => 'match *[module="pam_passwdqc.so"] size == 0',
    notify  => Exec['authconfig-update-all'],
}

exec { 'authconfig-update-all':
    command     => '/usr/sbin/authconfig --updateall',
    refreshonly => true,
}

Se você estiver lendo esta resposta, eu adoraria ouvir seus comentários sobre se essa é uma maneira sadia de lidar com as coisas. Eu sou novo no Puppet, então ainda estou sentindo o jeito que as coisas funcionam.

    
por 22.07.2011 / 05:19
1

O comando /usr/sbin/authconfig --updateall grava em / etc / sysconfig / authconfig - Você pode confirmar isso com um simples "ls -l". Está sobrescrevendo as mudanças que o fantoche / augúe faz.

Se fosse eu, eu lidaria com isso descobrindo quais são as mudanças subjacentes que você precisa e fazendo aquelas que, acredito, são todas para /etc/pam.d/system-auth-ac . Isso também tornaria trivial controlar os vários parâmetros para o módulo.

    
por 21.07.2011 / 01:26