Respuestas:
Yum admite complementos, por lo que es completamente posible escribir un complemento que lea el manifiesto de la marioneta en caché y advierta cuando una transacción sobrescribirá un archivo controlado por la marioneta. No estoy al tanto de un complemento existente que haga esto, pero probablemente escribiré uno solo, ya que me gusta la idea.
El complemento verifica todos los paquetes recién instalados / actualizados / degradados, le indica qué archivos administrados por títeres sobrescribirá y solicita una confirmación para hacerlo.
[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!
El complemento en sí se puede encontrar en mi repositorio de hacks github .
Actualización del 8 de noviembre de 2013:
Como se insinuó en los comentarios, ahora he convertido esto en un proyecto más grande para mejorar la interacción entre Yum y Puppet. Lo puedes encontrar en GitHub .
Sí, es posible pero no se relaciona con el títere en sí.
Los sistemas Linux tienen soporte para el mecanismo de inotificación que "puede usarse para monitorear y actuar sobre eventos del sistema de archivos". Además, inotify-tools
también hay un incron
programa que funciona de manera similar a cron pero reacciona a los eventos del sistema de archivos. Creo que puede usarlo para recibir notificaciones sobre el cambio de cualquier archivo.
(Por cierto, si desea ver el /etc/sysctl.conf
archivo, le sugiero que compruebe antes de hacerlo: ¿su Linux tiene soporte para el /etc/sysctl.d
directorio?)
No sé de una manera de implementar tales notificaciones. Es posible configurar algo organizando la transacción yum, determinando la lista de archivos de configuración que podrían verse afectados y luego verificando si Puppet administra alguno de ellos.
Sin embargo, en general, no es una buena práctica administrar un archivo que se actualizará mediante un paquete. En el caso de los archivos de configuración (use rpm -qlc packagename para ver si están marcados como tales), si el paquete contiene una nueva versión, se guarda como filename.rpmnew. Luego se le deja en sus propios dispositivos para combinar los cambios necesarios.
Nos encontramos con un problema en el que Puppet eliminaba un archivo de configuración y luego lo reemplazaba por yum cuando se actualizaba el paquete. Esto causó problemas hasta que la siguiente ejecución de la marioneta eliminó el archivo. Nuestra solución para esa situación fue establecer el contenido del archivo "eliminado" en un comentario para que esté esencialmente vacío. Otra forma de manejarlo sería intentar asegurar que Package ['a'] -> File ['/ etc / a'] de modo que solo se necesite una ejecución de títeres.