Ответы:
Yum поддерживает плагины, поэтому вполне возможно написать плагин, который читает кешированный манифест марионетки и предупреждает, когда транзакция перезапишет контролируемый марионетками файл. Я не знаю о существующем плагине, который делает это, но я , вероятно, напишу только что написал один сам, как мне нравится идея.
Плагин проверяет все недавно установленные / обновленные / пониженные пакеты, сообщает, какие файлы, управляемые марионетками, будут перезаписаны, и запрашивает подтверждение для этого.
[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!
Сам плагин можно найти в моем репозитории github hacks .
8 ноября 2013 обновление:
Как уже упоминалось в комментариях, я теперь превратил это в более крупный проект, чтобы улучшить взаимодействие между Yum и Puppet. Вы можете найти его на GitHub .
Да, это возможно, но это не относится к самой Марионетке.
Системы Linux имеют поддержку механизма inotify , который «может использоваться для мониторинга и обработки событий файловой системы». Кроме того, inotify-tools
есть incron
программа, которая работает аналогично cron, но реагирует на события файловой системы. Я думаю, что вы можете использовать его для уведомления об изменении любого файла.
(Кстати, если вы хотите посмотреть /etc/sysctl.conf
файл, который я предлагаю проверить, прежде чем делать это - есть ли в вашем Linux поддержка /etc/sysctl.d
каталога?)
Я не знаю, как реализовать такие уведомления. Может быть возможно что-то настроить, поставив транзакцию yum, определив список файлов конфигурации, которые могут быть затронуты, а затем проверив, управляет ли puppet каким-либо из них.
Однако в общем случае не рекомендуется управлять файлом, который будет обновляться пакетом. В случае файлов конфигурации (используйте rpm -qlc packagename, чтобы увидеть, помечены ли они как таковые), если пакет содержит новую версию, он сохраняется как filename.rpmnew. После этого вам предоставляется возможность самостоятельно вносить необходимые изменения.
Мы столкнулись с проблемой, когда файл конфигурации был удален puppet, а затем заменен yum при обновлении пакета. Это вызывало проблемы, пока следующий запуск кукол не удалил файл. Наш обходной путь для этой ситуации состоял в том, чтобы установить содержимое «удаленного» файла в комментарий, чтобы он был практически пустым. Другой способ справиться с этим - попытаться убедиться, что Package ['a'] -> File ['/ etc / a'] так, что необходим только один запуск кукол.