Thông báo khi một tập tin được điều khiển bởi con rối sẽ được thay đổi bởi yum


13

Có thể nhận được thông báo trên bàn điều khiển khi gói chứa tệp được điều khiển bởi con rối sắp thay đổi tệp đó không? Có nghĩa là, trong yum khi thực hiện cập nhật yum, có thể đưa ra một cảnh báo tùy chỉnh không?

Câu trả lời:


22

Yum hỗ trợ các plugin, vì vậy hoàn toàn có thể viết một plugin đọc bản kê khai con rối được lưu trong bộ nhớ cache và cảnh báo khi giao dịch sẽ ghi đè lên tệp được điều khiển bằng con rối. Tôi không biết về một plugin hiện có thực hiện điều này, nhưng tôi có thể sẽ viết chỉ cần tự viết một cái như tôi thích ý tưởng.

Plugin kiểm tra tất cả các gói mới được cài đặt / nâng cấp / hạ cấp, cho bạn biết các tệp được quản lý rối mà nó sẽ ghi đè lên và yêu cầu xác nhận để làm như vậy.

    [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!

Các plugin có thể được tìm thấy trong kho lưu trữ hack github của tôi .


Cập nhật ngày 8 tháng 11 năm 2013:

Như được gợi ý trong các bình luận, giờ đây tôi đã biến dự án này thành một dự án lớn hơn để cải thiện sự tương tác giữa Yum và Puppet. Bạn có thể tìm thấy nó trên GitHub .


Cái này thật đáng yêu. Tuy nhiên, tôi chắc chắn muốn biết rằng bỏ qua% config (noreplace), vì những thứ đó thực sự sẽ không bị ghi đè.
freiheit

Vâng, tôi dự định thêm nó, và nhiều hơn nữa. Câu hỏi này đã cho tôi rất nhiều ý tưởng :)
Dennis Kaarsemaker

Ồ Bạn thực sự đã vượt ra ngoài tiếng gọi của nhiệm vụ ở đây. Tôi rất ấn tượng. Đây chính xác là những gì câu hỏi của tôi đã cố gắng giải quyết. Tôi đã suy nghĩ một kịch bản shell nhưng điều này tốt hơn nhiều! Bây giờ, tôi đã cài đặt plugin của bạn vào yum, nhưng nó sẽ không tải plugin rối. Bất cứ ý tưởng tại sao? Tôi thấy tệp .pyc, nhưng không có tệp .pyo như rhnplugin và bảo mật có
Brian

Không bao giờ, tôi đã phải cài đặt PyYAML.
Brian

Bạn có thể thêm một giấy phép phần mềm?
Brian

2

Vâng, điều đó là có thể nhưng nó không liên quan đến chính Con rối.

Các hệ thống Linux có hỗ trợ cho cơ chế inotify "có thể được sử dụng để giám sát và hành động theo các sự kiện của hệ thống tập tin". Bên cạnh inotify-toolsđó cũng có incronchương trình hoạt động tương tự như cron nhưng nó phản ứng với các sự kiện hệ thống tập tin. Tôi nghĩ rằng bạn có thể sử dụng nó để được thông báo về việc thay đổi bất kỳ tập tin nào.

(BTW, nếu bạn muốn xem /etc/sysctl.conftệp tôi khuyên bạn nên kiểm tra trước khi thực hiện - Linux của bạn có hỗ trợ cho /etc/sysctl.dthư mục không?)


0

Tôi không biết cách để thực hiện các thông báo như vậy. Có thể thiết lập một cái gì đó bằng cách dàn dựng giao dịch yum, xác định danh sách các tệp cấu hình có thể bị ảnh hưởng và sau đó kiểm tra xem con rối có quản lý bất kỳ giao dịch nào không.

Tuy nhiên, nói chung, việc quản lý một tệp sẽ được cập nhật bởi một gói là không thực tế. Trong trường hợp các tệp cấu hình (sử dụng gói -cách gói-vòng / phút để xem chúng có được đánh dấu như vậy không), nếu gói chứa phiên bản mới, nó sẽ được lưu dưới dạng filename.rpmnew. Sau đó, bạn được để lại các thiết bị của riêng mình để hợp nhất mọi thay đổi cần thiết.

Chúng tôi đã gặp phải một vấn đề trong đó một tệp cấu hình đã bị gỡ bỏ bởi con rối và sau đó được thay thế bằng yum khi gói được cập nhật. Điều này gây ra vấn đề cho đến khi con rối tiếp theo chạy tệp. Cách giải quyết của chúng tôi cho tình huống đó là đặt nội dung của tệp "đã xóa" thành một nhận xét để về cơ bản là trống. Một cách khác để xử lý nó là cố gắng đảm bảo rằng Gói ['a'] -> Tệp ['/ etc / a'] để chỉ cần một lần chạy rối.


Tôi đã cố gắng tìm một số thực tiễn tốt nhất về con rối nói rằng "không phải là cách thực hành tốt để quản lý một tệp sẽ được cập nhật bởi một gói". Tôi quản lý sysctl.conf đặc biệt vì có các cài đặt trong tệp mà tôi cần cho một số ứng dụng nhất định để chạy. Thay thế sau đó là gì?
Brian

1
Hoàn toàn ổn khi quản lý các cấu hình với con rối mà yum cũng muốn chạm vào. RPM thường không chạm vào các tệp cấu hình tùy chỉnh và ngay cả khi có, con rối sẽ khôi phục nội dung của bạn.
Dennis Kaarsemaker

Các tệp cấu hình sẽ chỉ được cập nhật bằng RPM / yum nếu chúng không tồn tại. Việc sử dụng con rối để chỉnh sửa các tệp khác trong gói không phải là (thông thường) vì các thay đổi của bạn có thể phá vỡ chức năng. Tôi đoán sẽ tốt hơn nếu nói "chỉnh sửa" hơn là "quản lý" trong câu trả lời của tôi vì việc quản lý có thể đảm bảo quyền thích hợp. Nếu bạn muốn chỉnh sửa các tệp không phải là tệp cấu hình, thì bạn cũng nên thực hiện một số loại khóa hoặc loại trừ phiên bản để đảm bảo rằng các gói được cập nhật theo yêu cầu, không tự động. Bằng cách đó bạn có thể kiểm soát toàn bộ quá trình cập nhật.
jdkindy


@ 0A0D: Cảm ơn, đó là hành vi mà tôi đang nói đến. Tôi ước tôi có đủ đại diện để bình luận về bài đăng của Dennis Kaarsemaker - đó là khởi đầu của một giải pháp tao nhã. Ngoài ra, các thư mục ".d" cấu hình (được lưu ý bởi bộ mã hóa php) rất dễ thực hiện trong con rối nếu gói hỗ trợ chúng.
jdkindy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.