แจ้งเตือนเมื่อไฟล์ที่ควบคุมโดยหุ่นเชิดจะถูกเปลี่ยนโดย yum


13

เป็นไปได้หรือไม่ที่จะได้รับการแจ้งเตือนบนคอนโซลเมื่อแพ็คเกจที่มีไฟล์ที่ควบคุมโดย puppet กำลังจะเปลี่ยนไฟล์นั้น? ในความหมายของ 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 พฤศจิกายน 2556:

ดังที่ได้กล่าวไว้ในความคิดเห็นตอนนี้ฉันได้เปลี่ยนสิ่งนี้เป็นโครงการขนาดใหญ่เพื่อปรับปรุงปฏิสัมพันธ์ระหว่างยำและหุ่นกระบอก คุณสามารถค้นหาได้ใน GitHub


นี่มันช่างน่ารัก ฉันแน่ใจว่าหวังว่ามันจะรู้ว่าไม่สนใจสิ่งที่% config (ที่ไม่ใช่) เพราะมันไม่ได้ถูกเขียนทับ
freiheit

ใช่ฉันวางแผนที่จะเพิ่มและอีกมาก คำถามนี้ให้ฉันจำนวนมากคิด :)
เดนนิส Kaarsemaker

ว้าว ! คุณไปไกลกว่าการปฏิบัติหน้าที่ที่นี่จริงๆ ผมประทับใจ. นี่คือสิ่งที่คำถามของฉันพยายามตอบ ฉันคิดว่าเชลล์สคริปต์ แต่มันดีกว่ามาก! ตอนนี้ฉันติดตั้งปลั๊กอินของคุณลงใน yum แต่มันจะไม่โหลดปลั๊กอินหุ่นเชิด มีความคิดอะไรไหม ฉันเห็นไฟล์. pyc แต่ไม่มีไฟล์. pyo อย่างเช่น rhnplugin และความปลอดภัยมีอยู่
Brian

ไม่เป็นไรฉันต้องติดตั้ง PyYAML
Brian

คุณสามารถเพิ่มใบอนุญาตซอฟต์แวร์ได้หรือไม่?
Brian

2

ใช่มันเป็นไปได้ แต่มันไม่เกี่ยวข้องกับ Puppet เอง

ระบบลีนุกซ์มีการรองรับกลไกinotifyที่ "สามารถใช้ในการตรวจสอบและดำเนินการตามเหตุการณ์ระบบไฟล์" นอกจากนี้inotify-toolsยังมีincronโปรแกรมที่ทำงานคล้ายกับ cron แต่มันตอบสนองต่อเหตุการณ์ระบบไฟล์ ฉันคิดว่าคุณสามารถใช้มันเพื่อรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงไฟล์ใด ๆ

(BTW ถ้าคุณต้องการดู/etc/sysctl.confไฟล์ฉันแนะนำให้ตรวจสอบก่อนทำ - Linux ของคุณมีการสนับสนุนสำหรับ/etc/sysctl.dไดเรกทอรีหรือไม่)


0

ฉันไม่รู้วิธีใช้การแจ้งเตือนดังกล่าว อาจเป็นไปได้ที่จะตั้งค่าบางอย่างโดยจัดเตรียมธุรกรรม yum กำหนดรายการของไฟล์ปรับแต่งที่อาจได้รับผลกระทบจากนั้นตรวจสอบเพื่อดูว่า puppet จัดการกับสิ่งเหล่านั้นหรือไม่

อย่างไรก็ตามโดยทั่วไปมันไม่ดีในการจัดการไฟล์ที่จะถูกอัพเดตโดยแพ็คเกจ ในกรณีของไฟล์การกำหนดค่า (ใช้ rpm -qlc packagename เพื่อดูว่ามีการทำเครื่องหมายเช่นนี้หรือไม่) หากแพ็กเกจมีเวอร์ชันใหม่มันจะถูกบันทึกเป็น filename.rpmnew จากนั้นคุณจะถูกทิ้งไว้ในอุปกรณ์ของคุณเพื่อรวมการเปลี่ยนแปลงที่จำเป็น

เราพบปัญหาที่ไฟล์ config ถูกลบโดยหุ่นเชิดแล้วแทนที่ด้วย yum เมื่ออัปเดตแพคเกจแล้ว สิ่งนี้ทำให้เกิดปัญหาจนกระทั่งการเชิดหุ่นครั้งต่อไปจะลบไฟล์ออก วิธีแก้ปัญหาของเราสำหรับสถานการณ์นั้นคือการตั้งเนื้อหาของไฟล์ "ถูกลบ" เป็นความคิดเห็นดังนั้นมันจึงว่างเปล่า อีกวิธีในการจัดการก็คือพยายามตรวจสอบให้แน่ใจว่า Package ['a'] -> ไฟล์ ['/ etc / a'] เพื่อให้เรียกใช้หุ่นกระบอกเดียวเท่านั้น


ฉันพยายามค้นหาวิธีปฏิบัติที่ดีที่สุดบางอย่างเกี่ยวกับหุ่นกระบอกที่ระบุว่า "ไม่ใช่วิธีที่ดีในการจัดการไฟล์ที่จะได้รับการอัพเดตโดยแพ็คเกจ" ฉันจัดการ sysctl.conf โดยเฉพาะอย่างยิ่งเนื่องจากมีการตั้งค่าในไฟล์ที่ฉันต้องการให้แอปพลิเคชันบางตัวทำงาน ทางเลือกคืออะไร?
Brian

1
มันเป็นเรื่องดีในการจัดการ config ด้วยหุ่นที่ yum ต้องการสัมผัส โดยทั่วไป RPM จะไม่สัมผัสไฟล์ปรับแต่งที่กำหนดเองและแม้ว่ามันจะเป็นเช่นนั้นหุ่นก็จะเรียกคืนเนื้อหาของคุณ
Dennis Kaarsemaker

ไฟล์การกำหนดค่าจะอัปเดตโดย RPM / yum หากไม่มีอยู่ ไม่ใช่วิธีที่ดี (โดยทั่วไป) ในการใช้หุ่นเชิดเพื่อแก้ไขไฟล์อื่น ๆ ในแพ็คเกจเนื่องจากการเปลี่ยนแปลงของคุณอาจทำให้ฟังก์ชันการทำงานเสียหาย ฉันเดาว่าคงเป็นการดีกว่าถ้าจะพูดว่า "แก้ไข" มากกว่า "จัดการ" ในคำตอบของฉันเนื่องจากการจัดการสามารถมั่นใจได้ถึงการอนุญาตที่เหมาะสม หากคุณต้องการแก้ไขไฟล์ที่ไม่ใช่ไฟล์กำหนดค่าคุณควรใช้การล็อคหรือแยกรุ่นบางประเภทเพื่อให้แน่ใจว่าแพ็กเกจนั้นได้รับการอัพเดตตามความต้องการไม่ใช่โดยอัตโนมัติ ด้วยวิธีนี้คุณสามารถควบคุมกระบวนการอัพเดตทั้งหมดได้
jdkindy


@ 0A0D: ขอบคุณนั่นคือพฤติกรรมที่ฉันพูดถึง ฉันหวังว่าฉันจะมีตัวแทนมากพอที่จะแสดงความคิดเห็นในโพสต์ของ Dennis Kaarsemaker - นั่นคือจุดเริ่มต้นของการแก้ปัญหาที่สง่างาม นอกจากนี้การกำหนดค่าไดเรกทอรี ".d" (บันทึกโดย php-coder) นั้นง่ายมากที่จะนำไปใช้ในหุ่นเชิดถ้าแพ็คเกจนั้นรองรับ
jdkindy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.