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

Можно ли получить уведомление на консоли, когда пакет, содержащий файл, которым управляет puppet, собирается изменить этот файл? Имеется в виду, что при выполнении обновления yum в yum можно ли добавить пользовательское предупреждение?

3 ответа

Решение

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 имя_пакета, чтобы увидеть, помечены ли они как таковые), если пакет содержит новую версию, он сохраняется как filename.rpmnew. После этого вам предоставляется возможность самостоятельно вносить любые необходимые изменения.

Мы столкнулись с проблемой, когда файл конфигурации был удален puppet, а затем заменен yum при обновлении пакета. Это вызывало проблемы, пока следующий запуск кукол не удалил файл. Наш обходной путь для этой ситуации состоял в том, чтобы установить содержимое "удаленного" файла в комментарий, чтобы он был практически пустым. Другой способ справиться с этим - попытаться убедиться, что Package['a'] -> File['/etc/a'] так, что необходим только один запуск кукол.

Другие вопросы по тегам