Odpowiedzi:
Yum obsługuje wtyczki, więc jest całkowicie możliwe napisanie wtyczki, która odczytuje buforowany kukiełkowy manifest i ostrzega, kiedy transakcja zastąpi plik kontrolowany przez marionetkę. Nie znam istniejącej wtyczki, która to robi, ale prawdopodobnie napiszę tylko jedną, ponieważ podoba mi się ten pomysł.
Wtyczka sprawdza wszystkie nowo zainstalowane / zaktualizowane / obniżone pakiety, informuje, które pliki zarządzane przez marionetki zostaną zastąpione i prosi o potwierdzenie.
[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!
Sama wtyczka znajduje się w moim repozytorium hacków github .
Aktualizacja z 8 listopada 2013:
Jak wskazano w komentarzach, teraz przekształciłem to w większy projekt mający na celu poprawę interakcji między Yum a Puppet. Możesz go znaleźć na GitHub .
Tak, jest to możliwe, ale nie dotyczy samej Marionetki.
Systemy Linux obsługują mechanizm inotify , który „może być wykorzystywany do monitorowania zdarzeń systemu plików i reagowania na nie”. Poza inotify-tools
tym jest też incron
program, który działa podobnie do crona, ale reaguje na zdarzenia w systemie plików. Myślę, że możesz go użyć do powiadomienia o zmianie dowolnego pliku.
(BTW, jeśli chcesz obejrzeć /etc/sysctl.conf
plik, sugeruję sprawdzić przed zrobieniem tego - czy twój Linux ma obsługę /etc/sysctl.d
katalogu?)
Nie znam sposobu na wdrożenie takich powiadomień. Możliwe może być ustawienie czegoś przez zainscenizowanie transakcji yum, określenie listy plików konfiguracyjnych, na które może to mieć wpływ, a następnie sprawdzenie, czy marionetka zarządza którymś z nich.
Jednak ogólnie rzecz biorąc, nie jest dobrą praktyką zarządzanie plikiem, który będzie aktualizowany przez pakiet. W przypadku plików konfiguracyjnych (użyj rpm -qlc nazwa_pakietu, aby sprawdzić, czy są one oznaczone jako takie), jeśli pakiet zawiera nową wersję, zostanie zapisany jako nazwa_pliku.rpmnew. Następnie pozostawiasz swoje własne urządzenia, aby scalić wszelkie potrzebne zmiany.
Wystąpił problem polegający na tym, że plik konfiguracyjny został usunięty przez marionetkę, a następnie zastąpiony przez yum podczas aktualizacji pakietu. Powodowało to problemy do czasu, gdy kolejny bieg marionetek usunął plik. Naszym rozwiązaniem tego problemu było ustawienie zawartości „usuniętego” pliku na komentarz, aby był on zasadniczo pusty. Innym sposobem na poradzenie sobie z tym byłoby próba upewnienia się, że Package ['a'] -> File ['/ etc / a'], tak że potrzebny jest tylko jeden ciąg marionetek.