Risposte:
Yum supporta i plug-in, quindi è del tutto possibile scrivere un plug-in in grado di leggere il manifest delle marionette memorizzato nella cache e avvisare quando una transazione sovrascriverà un file controllato dalle marionette. Non sono a conoscenza di un plug-in esistente che lo fa, ma probabilmente scriverò solo uno scritto da me come mi piace l'idea.
Il plugin controlla tutti i pacchetti appena installati / aggiornati / declassati, ti dice quali file gestiti da burattini sovrascriveranno e ti chiede una conferma per farlo.
[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!
Il plugin stesso può essere trovato nel mio repository di hacking di github .
Aggiornamento dell'8 novembre 2013:
Come accennato nei commenti, ora ho trasformato questo in un progetto più ampio per migliorare l'interazione tra Yum e Puppet. Lo puoi trovare su GitHub .
Sì, è possibile ma non si riferisce al Puppet stesso.
I sistemi Linux supportano il meccanismo di inotify che "può essere usato per monitorare e agire sugli eventi del filesystem". Inoltre inotify-tools
c'è anche un incron
programma che funziona in modo simile a cron ma reagisce agli eventi del file system. Penso che potresti usarlo per ricevere notifiche sulla modifica di qualsiasi file.
(A proposito, se vuoi guardare un /etc/sysctl.conf
file che ti consiglio di controllare prima di farlo - il tuo Linux ha il supporto per la /etc/sysctl.d
directory?)
Non conosco un modo per implementare tali notifiche. Potrebbe essere possibile impostare qualcosa mettendo in scena la transazione yum, determinando l'elenco dei file di configurazione che potrebbero essere interessati e quindi controllando se un pupazzo ne gestisce uno.
Tuttavia, in generale non è buona norma gestire un file che verrà aggiornato da un pacchetto. Nel caso dei file di configurazione (utilizzare rpm -qlc nomepacchetto per vedere se sono contrassegnati come tali), se il pacchetto contiene una nuova versione viene salvato come nomefile.rpmnew. Si viene quindi lasciati sui propri dispositivi per unire le modifiche necessarie.
Abbiamo riscontrato un problema in cui un file di configurazione è stato rimosso da Puppet e quindi sostituito da Yum quando il pacchetto è stato aggiornato. Ciò ha causato problemi fino alla successiva esecuzione di marionette rimossa il file. La nostra soluzione alternativa per quella situazione era di impostare il contenuto del file "rimosso" su un commento, in modo che sia essenzialmente vuoto. Un altro modo per gestirlo sarebbe tentare di garantire che il pacchetto ['a'] -> File ['/ etc / a'] in modo che sia necessaria una sola esecuzione di marionette.