Можно ли получить уведомление на консоли, когда пакет, содержащий файл, управляемый марионеткой, собирается изменить этот файл? Это означает, что в yum при обновлении yum можно ввести настраиваемое предупреждение?
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, определив список файлов конфигурации, которые могут быть затронуты, а затем проверить, управляет ли марионетка какими-либо из них.
Однако в целом не рекомендуется управлять файлом, который будет обновлен пакетом. В случае файлов конфигурации (используйте rpm -qlc имя_пакета, чтобы узнать, помечены ли они как таковые), если пакет содержит новую версию, он сохраняется как имя_файла.rpmnew. Затем вы остаетесь наедине с собой, чтобы внести любые необходимые изменения.
Мы столкнулись с проблемой, когда файл конфигурации был удален с помощью puppet, а затем заменен yum при обновлении пакета. Это вызывало проблемы до тех пор, пока следующий запуск марионетки не удалил файл. Нашим обходным решением для этой ситуации было присвоение содержания «удаленного» файла комментария, чтобы он был по существу пустым. Другой способ справиться с этим - попытаться убедиться, что Package ['a'] -> File ['/ etc / a'], так что требуется только один запуск марионетки.