Ich habe ein Problem mit dem folgenden Puppet-Manifest, das das passwdqc
Pam-Modul auf einem RHEL-6-System aktivieren soll (dies verwendet Puppet 0.25.5 und 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,
}
Wenn ich dieses Manifest ausführe, scheint es erfolgreich abgeschlossen zu werden:
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
Wenn ich jedoch die Zieldatei untersuche, wurden die Änderungen nicht übernommen:
# egrep 'PASSWDQC|CRACKLIB' /etc/sysconfig/authconfig
USECRACKLIB=yes
USEPASSWDQC=no
Wenn ich die notify => ...
Zeile aus dem Manifest entferne , funktioniert sie genau wie beabsichtigt. Das heißt, vorausgesetzt:
augeas { 'authconfig':
context => '/files/etc/sysconfig/authconfig',
changes => [
'set USEPASSWDQC yes',
'set USECRACKLIB no',
],
}
Die Änderungen werden erfolgreich gespeichert:
# 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
Irgendeine Idee, was hier los ist? Offensichtlich glaubt Puppet , dass die Änderung beim ersten Mal vorgenommen wird, aber sie wird nicht tatsächlich auf der Festplatte gespeichert. Wir haben andere Konfigurationen mit Augeas und benachrichtigen Vorgänge, die einwandfrei funktionieren. Wir konnten nicht herausfinden, warum dies fehlschlägt. Beachten Sie, dass das gleiche Problem besteht, wenn ich notify
die Augeas-Operation durch subscribe
die entsprechende exec
Definition ersetze .
Mein aktueller Plan ist es, Pakete aus neueren Versionen von Puppet und Augeas zu erstellen und zu sehen, ob das Problem auf magische Weise verschwinden wird.
UPDATE : freiheit weist darauf hin, dass authconfig
diese Datei anscheinend überschrieben wird. Seltsamerweise war unter CentOS 5 das Ändern /etc/sysconfig/authconfig
und anschließende Ausführen authconfig --updateall
genau das richtige Verfahren. Dies ist, was wir tatsächlich in unserem alten Kickstart verwenden.
Anscheinend hat sich das RHEL6-Upgrade authconfig
auf seltsame und nicht hilfreiche Weise verhalten.
system-auth-ac
, da ich nur diese eine Änderung vornehmen und alle anderen Benutzermodifikationen beibehalten möchte. Es wäre einfach mitsed
. Aber so etwas versuchen wir zu vermeiden ...