Benachrichtigung, wenn eine von Puppet gesteuerte Datei von Yum geändert wird

13

Ist es möglich, eine Benachrichtigung auf der Konsole zu erhalten, wenn ein Paket, das eine von Puppet gesteuerte Datei enthält, diese Datei ändern wird? Bedeutet das, in yum, wenn yum update ausgeführt wird, ist es möglich, eine benutzerdefinierte Warnung einzufügen?

Brian
quelle

Antworten:

22

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 .

Dennis Kaarsemaker
quelle
Das ist schön. Ich wünschte, es würde% config (noreplace) ignorieren, da diese eigentlich nicht überschrieben werden.
freiheit
Ja, ich habe vor, das und noch viel mehr hinzuzufügen. Diese Frage gab mir viele Ideen :)
Dennis Kaarsemaker
Wow ! Du bist hier wirklich über die Pflicht hinausgegangen. Ich bin beeindruckt. Genau das wollte meine Frage beantworten. Ich dachte an ein Shell-Skript, aber das ist viel besser! Jetzt habe ich dein Plugin in yum installiert, aber das Puppet-Plugin wird nicht geladen. Irgendeine Idee warum? Ich sehe die .pyc-Datei, aber keine .pyo-Datei wie Rhnplugin und Sicherheit haben
Brian
Trotzdem musste ich PyYAML installieren.
Brian
Können Sie eine Softwarelizenz hinzufügen?
Brian
2

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-toolsgibt es auch ein incronProgramm, 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.confDateien ansehen möchten, schlage ich vor, dies vorher zu überprüfen - unterstützt Ihr Linux /etc/sysctl.dVerzeichnisse?)

PHP-Codierer
quelle
0

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.

jdkindy
quelle
Ich habe versucht, einige bewährte Vorgehensweisen für Puppet zu finden, die besagen, dass es nicht empfehlenswert ist, eine Datei zu verwalten, die von einem Paket aktualisiert wird. Ich verwalte sysctl.conf besonders, weil es Einstellungen in dieser Datei gibt, die ich brauche, damit bestimmte Anwendungen ausgeführt werden. Was ist dann die Alternative?
Brian
1
Es ist absolut in Ordnung, Configs mit Puppets zu verwalten, die auch von Yum angefasst werden sollen. RPM wird im Allgemeinen keine angepassten Konfigurationsdateien berühren, und selbst wenn dies der Fall ist, stellt Puppet Ihren Inhalt wieder her.
Dennis Kaarsemaker
Konfigurationsdateien werden nur von RPM / yum aktualisiert, wenn sie nicht vorhanden sind. Es ist (im Allgemeinen) nicht empfehlenswert, Puppet zu verwenden, um andere Dateien im Paket zu bearbeiten, da Ihre Änderungen die Funktionalität beeinträchtigen können. Ich denke, es wäre besser gewesen, in meiner Antwort "Bearbeiten" als "Verwalten" zu sagen, da das Verwalten die richtigen Berechtigungen sicherstellen kann. Wenn Sie Dateien bearbeiten möchten, die keine Konfigurationsdateien sind, sollten Sie auch eine Art Versionssperre oder -ausschluss implementieren, um sicherzustellen, dass Pakete bei Bedarf und nicht automatisch aktualisiert werden. Auf diese Weise können Sie den gesamten Aktualisierungsprozess steuern.
JDKINDY
@ 0A0D: Danke, das ist das Verhalten, von dem ich gesprochen habe. Ich wünschte, ich hätte genug Repräsentanten, um Dennis Kaarsemakers Post zu kommentieren - das ist der Beginn einer eleganten Lösung. Außerdem sind die Konfigurationsverzeichnisse ".d" (von php-coder notiert) sehr einfach in puppet zu implementieren, wenn das Paket sie unterstützt.
JDKINDY