Respostas:
O Yum suporta plug-ins, portanto, é totalmente possível escrever um plug-in que leia o manifesto de fantoches em cache e avise quando uma transação substituirá um arquivo controlado por fantoches. Não conheço um plug-in existente que faça isso, mas provavelmente vou escrever apenas um como eu gosto da ideia.
O plug-in verifica todos os pacotes recém-instalados / atualizados / desatualizados, informa quais arquivos gerenciados por fantoches serão substituídos e solicita uma confirmação para isso.
[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!
O próprio plugin pode ser encontrado no meu repositório de hacks do github .
Atualização de 8 de novembro de 2013:
Como sugerido nos comentários, agora transformei isso em um projeto maior para melhorar a interação entre Yum e Puppet. Você pode encontrá-lo no GitHub .
Sim, é possível, mas não se relaciona com o próprio Boneco.
Os sistemas Linux suportam o mecanismo inotify , que "pode ser usado para monitorar e atuar nos eventos do sistema de arquivos". Além disso, inotify-tools
há também um incron
programa que funciona de maneira semelhante ao cron, mas ele reage aos eventos do sistema de arquivos. Eu acho que você pode usá-lo para ser notificado sobre a alteração de qualquer arquivo.
(BTW, se você quiser assistir o /etc/sysctl.conf
arquivo, sugiro verificar antes de fazê-lo - o seu Linux tem suporte para o /etc/sysctl.d
diretório?)
Não conheço uma maneira de implementar essas notificações. Pode ser possível configurar algo organizando a transação yum, determinando a lista de arquivos de configuração que podem ser afetados e verificando se o fantoche gerencia algum deles.
No entanto, em geral, não é uma boa prática gerenciar um arquivo que será atualizado por um pacote. No caso de arquivos de configuração (use rpm -qlc packagename para ver se estão marcados como tal), se o pacote contiver uma nova versão, ele será salvo como filename.rpmnew. Em seguida, você fica com seus próprios dispositivos para mesclar as alterações necessárias.
Ocorreu um problema em que um arquivo de configuração foi removido pelo fantoche e substituído pelo yum quando o pacote foi atualizado. Isso causou problemas até a próxima execução de marionetes remover o arquivo. Nossa solução alternativa para essa situação foi definir o conteúdo do arquivo "removido" como um comentário para que fique essencialmente vazio. Outra maneira de lidar com isso seria tentar garantir que o Pacote ['a'] -> Arquivo ['/ etc / a'] seja necessário apenas para executar uma marionete.