Antworten:
Yum unterstützt Plugins, daher ist es durchaus möglich, ein Plugin zu schreiben, das das zwischengespeicherte Puppenmanifest liest und warnt, wenn eine Transaktion eine puppengesteuerte Datei überschreibt. Mir ist kein vorhandenes Plugin bekannt, das dies tut, aber ich werde wahrscheinlich nur eines selbst schreiben, da mir die Idee gefällt.
Das Plugin überprüft alle neu installierten / aktualisierten / herabgestuften Pakete, teilt Ihnen mit, welche Puppet-verwalteten Dateien überschrieben werden, und fordert Sie zur Bestätigung auf.
[root@camel ~]# yum update pam
Loaded plugins: puppet, security
Skipping security plugin, no data
Setting up Update Process
Resolving Dependencies
Skipping security plugin, no data
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================
Updating:
pam i386 0.99.6.2-12.el5 base 983 k
pam x86_64 0.99.6.2-12.el5 base 982 k
Transaction Summary
===============================================================================================================================================================
Install 0 Package(s)
Upgrade 2 Package(s)
Total download size: 1.9 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): pam-0.99.6.2-12.el5.x86_64.rpm | 982 kB 00:00
(2/2): pam-0.99.6.2-12.el5.i386.rpm | 983 kB 00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 8.7 MB/s | 1.9 MB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
Is this ok [y/N]: n
Aborting
[root@camel ~]# yum update pam
Loaded plugins: puppet, security
Skipping security plugin, no data
Setting up Update Process
Resolving Dependencies
Skipping security plugin, no data
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================
Updating:
pam i386 0.99.6.2-12.el5 base 983 k
pam x86_64 0.99.6.2-12.el5 base 982 k
Transaction Summary
===============================================================================================================================================================
Install 0 Package(s)
Upgrade 2 Package(s)
Total size: 1.9 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
Is this ok [y/N]: y
Updating : pam 1/4
Updating : pam 2/4
Cleanup : pam 3/4
Cleanup : pam 4/4
Updated:
pam.i386 0:0.99.6.2-12.el5 pam.x86_64 0:0.99.6.2-12.el5
Complete!
Das Plugin selbst befindet sich in meinem Github-Hacks-Repository .
Update vom 8. November 2013:
Wie in den Kommentaren angedeutet, habe ich dies nun zu einem größeren Projekt gemacht, um die Interaktion zwischen Yum und Puppet zu verbessern. Sie finden es auf GitHub .
Ja, es ist möglich, aber es hat nichts mit der Puppe selbst zu tun.
Linux-Systeme unterstützen den Inotify- Mechanismus, mit dem "Dateisystemereignisse überwacht und darauf reagiert werden können". Daneben inotify-tools
gibt es auch ein incron
Programm, das ähnlich wie cron arbeitet, aber auf Dateisystemereignisse reagiert. Ich denke, dass Sie es verwenden können, um über das Ändern einer Datei benachrichtigt zu werden.
(Übrigens, wenn Sie /etc/sysctl.conf
Dateien ansehen möchten, schlage ich vor, dies vorher zu überprüfen - unterstützt Ihr Linux /etc/sysctl.d
Verzeichnisse?)
Ich kenne keine Möglichkeit, solche Benachrichtigungen zu implementieren. Es kann möglich sein, etwas einzurichten, indem Sie die yum-Transaktion bereitstellen, die Liste der möglicherweise betroffenen Konfigurationsdateien ermitteln und dann überprüfen, ob Puppet eine dieser Dateien verwaltet.
Im Allgemeinen ist es jedoch nicht ratsam, eine Datei zu verwalten, die von einem Paket aktualisiert wird. Bei Konfigurationsdateien (verwenden Sie rpm -qlc Paketname, um festzustellen, ob sie als solche gekennzeichnet sind) wird das Paket, wenn es eine neue Version enthält, unter dem Namen filename.rpmnew gespeichert. Sie bleiben dann auf Ihren eigenen Geräten, um alle erforderlichen Änderungen zusammenzuführen.
Wir sind auf ein Problem gestoßen, bei dem eine Konfigurationsdatei von puppet entfernt und dann durch yum ersetzt wurde, als das Paket aktualisiert wurde. Dies verursachte Probleme, bis der nächste Puppenlauf die Datei entfernte. Unser Workaround für diese Situation bestand darin, den Inhalt der "entfernten" Datei auf einen Kommentar zu setzen, so dass er im Wesentlichen leer ist. Eine andere Möglichkeit wäre es, sicherzustellen, dass Paket ['a'] -> Datei ['/ etc / a'] so ist, dass nur ein Puppenspiel benötigt wird.