Câu trả lời:
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 .
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ó incron
chươ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.conf
tệ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.d
thư mục không?)
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.