Назад | Перейти на главную страницу

Уведомляется, когда файл, управляемый марионеткой, будет изменен yum

Можно ли получить уведомление на консоли, когда пакет, содержащий файл, управляемый марионеткой, собирается изменить этот файл? Это означает, что в 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'], так что требуется только один запуск марионетки.