เป็นไปได้หรือไม่ที่จะได้รับการแจ้งเตือนบนคอนโซลเมื่อแพ็คเกจที่มีไฟล์ที่ควบคุมโดย puppet กำลังจะเปลี่ยนไฟล์นั้น? ในความหมายของ yum เมื่อทำการปรับปรุง yum มันเป็นไปได้ที่จะฉีดคำเตือนที่กำหนดเอง?
เป็นไปได้หรือไม่ที่จะได้รับการแจ้งเตือนบนคอนโซลเมื่อแพ็คเกจที่มีไฟล์ที่ควบคุมโดย puppet กำลังจะเปลี่ยนไฟล์นั้น? ในความหมายของ 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 แฮ็ก
อัปเดต 8 พฤศจิกายน 2556:
ดังที่ได้กล่าวไว้ในความคิดเห็นตอนนี้ฉันได้เปลี่ยนสิ่งนี้เป็นโครงการขนาดใหญ่เพื่อปรับปรุงปฏิสัมพันธ์ระหว่างยำและหุ่นกระบอก คุณสามารถค้นหาได้ใน GitHub
ใช่มันเป็นไปได้ แต่มันไม่เกี่ยวข้องกับ Puppet เอง
ระบบลีนุกซ์มีการรองรับกลไกinotifyที่ "สามารถใช้ในการตรวจสอบและดำเนินการตามเหตุการณ์ระบบไฟล์" นอกจากนี้inotify-tools
ยังมีincron
โปรแกรมที่ทำงานคล้ายกับ cron แต่มันตอบสนองต่อเหตุการณ์ระบบไฟล์ ฉันคิดว่าคุณสามารถใช้มันเพื่อรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงไฟล์ใด ๆ
(BTW ถ้าคุณต้องการดู/etc/sysctl.conf
ไฟล์ฉันแนะนำให้ตรวจสอบก่อนทำ - Linux ของคุณมีการสนับสนุนสำหรับ/etc/sysctl.d
ไดเรกทอรีหรือไม่)
ฉันไม่รู้วิธีใช้การแจ้งเตือนดังกล่าว อาจเป็นไปได้ที่จะตั้งค่าบางอย่างโดยจัดเตรียมธุรกรรม yum กำหนดรายการของไฟล์ปรับแต่งที่อาจได้รับผลกระทบจากนั้นตรวจสอบเพื่อดูว่า puppet จัดการกับสิ่งเหล่านั้นหรือไม่
อย่างไรก็ตามโดยทั่วไปมันไม่ดีในการจัดการไฟล์ที่จะถูกอัพเดตโดยแพ็คเกจ ในกรณีของไฟล์การกำหนดค่า (ใช้ rpm -qlc packagename เพื่อดูว่ามีการทำเครื่องหมายเช่นนี้หรือไม่) หากแพ็กเกจมีเวอร์ชันใหม่มันจะถูกบันทึกเป็น filename.rpmnew จากนั้นคุณจะถูกทิ้งไว้ในอุปกรณ์ของคุณเพื่อรวมการเปลี่ยนแปลงที่จำเป็น
เราพบปัญหาที่ไฟล์ config ถูกลบโดยหุ่นเชิดแล้วแทนที่ด้วย yum เมื่ออัปเดตแพคเกจแล้ว สิ่งนี้ทำให้เกิดปัญหาจนกระทั่งการเชิดหุ่นครั้งต่อไปจะลบไฟล์ออก วิธีแก้ปัญหาของเราสำหรับสถานการณ์นั้นคือการตั้งเนื้อหาของไฟล์ "ถูกลบ" เป็นความคิดเห็นดังนั้นมันจึงว่างเปล่า อีกวิธีในการจัดการก็คือพยายามตรวจสอบให้แน่ใจว่า Package ['a'] -> ไฟล์ ['/ etc / a'] เพื่อให้เรียกใช้หุ่นกระบอกเดียวเท่านั้น