Повідомлено, коли файл, керований лялькою, буде змінено на yum


13

Чи можливо отримувати сповіщення на консолі, коли пакет, що містить файл, яким керує лялька, збирається змінити цей файл? Значить, чи в yum під час оновлення yum можна ввести спеціальне попередження?

Відповіді:


22

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 .


8 листопада 2013 року оновлення:

Як натякнули в коментарях, я зараз перетворив це на більш масштабний проект покращення взаємодії між Yum та Лялькою. Ви можете знайти його на GitHub .


Це прекрасно. Я впевнений, хотів би, щоб він знав ігнорувати% config (noreplace) речі, оскільки вони насправді не будуть перезаписані.
freiheit

Так, я планую це додати, і ще багато іншого. Це питання дало мені багато ідей :)
Денніс Каарсемейкер

Оце Так ! Ви дійсно вийшли за рамки податкових обов'язків тут. Я перебуваю під враженням. Це саме те, що я намагався вирішити. Я думав про сценарій оболонки, але це набагато краще! Тепер я встановив ваш плагін у yum, але він не завантажить ляльковий плагін. Будь-яка ідея чому? Я бачу файл .pyc, але жоден файл .pyo, як rhnplugin та безпека,
Брайан,

Не зважаючи, мені довелося встановити PyYAML.
Брайан

Чи можете ви додати ліцензію на програмне забезпечення?
Брайан

2

Так, це можливо, але це не стосується самої Лялечки.

Системи Linux мають підтримку механізму inotify, який "може використовуватися для моніторингу та дії подій файлової системи". Крім того, inotify-toolsіснує також incronпрограма, яка працює аналогічно cron, але вона реагує на події файлової системи. Я думаю, що ви можете використовувати його для оповіщення про зміну будь-якого файлу.

(BTW, якщо ви хочете переглянути /etc/sysctl.confфайл, я пропоную перевірити, перш ніж це зробити - чи є у вашого Linux підтримка /etc/sysctl.dкаталогу?)


0

Я не знаю, як реалізувати такі сповіщення. Можливо, можливо щось налаштувати шляхом постановки трансляції yum, визначення списку конфігураційних файлів, на які це може вплинути, а потім перевірки, чи маріонетка управляє будь-яким із них.

Однак, як правило, керувати файлом, який буде оновлений пакетом, не є хорошою практикою. У випадку файлів конфігурації (використовуйте rpm -qlc ім'я пакета, щоб побачити, чи вони позначені як такі), якщо пакет містить нову версію, він зберігається як filename.rpmnew. Потім ви залишаєтесь на власних пристроях, щоб об'єднати всі необхідні зміни.

Ми зіткнулися з проблемою, коли конфігураційний файл було видалено маріонеткою, а потім замінено yum, коли пакет оновлений. Це спричинило проблеми, поки наступний маріонетковий цикл не видалив файл. Нашим вирішенням цієї ситуації було встановити вміст "вилученого" файлу до коментаря, щоб він по суті був порожнім. Іншим способом впоратися з цим було б спробувати переконатися, що Package ['a'] -> File ['/ etc / a'], так що потрібен лише один маріонетковий запуск.


Я спробував знайти кілька кращих практик роботи з лялькою, в яких сказано, що "це не дуже добре керувати файлом, який буде оновлений пакетом". Я керую sysctl.conf, особливо тому, що в цьому файлі є налаштування, які мені потрібні для запуску певних програм. Яка альтернатива тоді?
Брайан

1
Керувати конфігураціями з лялькою, яких ви також бажаєте торкнутися, це абсолютно добре. RPM зазвичай не торкається налаштованих конфігураційних файлів, і навіть якщо це станеться, лялька відновить ваш вміст.
Денніс Каарсемейкер

Файли конфігурації оновлюються лише RPM / yum, якщо вони не існують. Не в основному використовувати маріонетку для редагування інших файлів у пакеті, оскільки ваші зміни можуть порушити функціональність. Я думаю, було б краще сказати "редагувати", ніж "керувати" у моїй відповіді, оскільки управління може забезпечувати належні дозволи. Якщо ви хочете редагувати файли, які не конфігурують файли, вам слід також застосувати якесь блокування версій або виключення версій, щоб гарантувати оновлення пакетів на вимогу, а не автоматично. Таким чином ви можете контролювати весь процес оновлення.
jdkindy


@ 0A0D: Дякую, саме про таку поведінку я говорив. Мені б хотілося, щоб у мене було достатньо представника, щоб прокоментувати повідомлення Денніса Каарсемейкера - це початок елегантного рішення. Крім того, каталоги ".d" конфігурації (відмічені php-кодером) дуже легко реалізувати в лялькових, якщо пакет підтримує їх.
jdkindy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.