puppet: บังคับให้เริ่มบริการใหม่หลังจากแก้ไขไฟล์กำหนดค่าแล้ว


21

ฉันจะมั่นใจได้อย่างไรว่าหากไฟล์การกำหนดค่าเวอร์ชันใหม่ถูกดาวน์โหลดผ่าน puppet จากแหล่งเก็บข้อมูลหลักไปยังเซิร์ฟเวอร์ที่ได้รับการจัดการอย่างใดอย่างหนึ่งจะเริ่มบริการที่เกี่ยวข้องใหม่

สถานการณ์สมมติทั่วไป - สมมติว่ามีการกำหนดค่า munin หรือ apache ใหม่ ลูกค้าหุ่นกระบอกค้นพบมันเขียนทับไฟล์ในตัวเครื่อง ... และ ... - จะทำให้แน่ใจได้อย่างไรว่าบริการเริ่มต้นใหม่ / โหลดใหม่?

ขอบคุณมาก!

คำตอบ:


23

ทางเลือกในการแจ้งเตือนคือสมัครสมาชิก:

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

ความแตกต่างที่อธิบายว่าความสัมพันธ์จากอีกด้านหนึ่ง ตัวอย่างเช่นคุณอาจให้ apache สมัครสมาชิกกับ /etc/apache/httpd.conf แต่คุณต้องสร้างไฟล์ vhost เพื่อแจ้งให้ทราบ apache เนื่องจากคลาส Apache ของคุณจะไม่รู้จัก vhost ทุกตัวที่คุณมี

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

ดังที่ชาดกล่าวถึงหากคุณพบว่าหุ่นกระบอกพยายามให้บริการของคุณอยู่ตลอดเวลาคุณต้องเพิ่มพารามิเตอร์รูปแบบซึ่งเป็น regex เพื่อใช้กับรายการกระบวนการ โดยค่าเริ่มต้นหุ่นจะหยุดและเริ่มบริการใหม่ หากคุณเพิ่ม "hasrestart => true" มันจะใช้คำสั่งที่ระบุในพารามิเตอร์ "restart" เพื่อเริ่มบริการใหม่


22

ดูเหมือนว่าฉันได้พบบางสิ่ง:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

เราจะดูว่ามันจะทำงานอย่างไร อย่างไรก็ตามความคิดของคุณเกี่ยวกับเรื่องยินดีต้อนรับ


1
ใช่. คุณสามารถค้นหารายละเอียดได้ในการอ้างอิงประเภทหุ่นกระบอกภายใต้ "Metaparameters" ( reductivelabs.com/trac/puppet/wiki/TypeReference#metaparameters )
Chad Huneycutt

1
โอ้และขึ้นอยู่กับระบบปฏิบัติการของคุณคุณอาจต้องเล่นกับพารามิเตอร์ hasstatus, hasrestart และ / หรือ pattern ของประเภทบริการ
Chad Huneycutt

2

(ฉันรู้ว่านี่เป็นคำถามที่เก่ามาก แต่แค่คิดว่าฉันใส่สองเซ็นต์ของฉันด้วย (ในความคิดของฉัน) วิธีที่ง่ายกว่ามากที่จะทำ)

คุณสามารถใช้สัญลักษณ์ลูกศรได้เช่นกัน:

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

หรือ

File['/etc/sshd_config'] ~> Service['sshd']

ในตัวอย่างแรกของคุณคุณไม่ต้องการตัวเลือกการแจ้งเตือนหากคุณใช้ลูกศร
c4f4t0r

อุ่ย ฉันเพิ่งคัดลอกและลืมที่จะออก
Ethan Brouwer

1

ใช้งานได้กับ Solaris 10 :)

class sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}

0

มีเครื่องหมายเทียบเท่าหลายรายการ:

แจ้งเตือน :

file { '/etc/sshd_config':
    notify => Service[sshd],
}

service { sshd:
    ensure => running
}

สมัครสมาชิก :

file { '/etc/sshd_config':
   ...
}

service { sshd:
    ensure => running,
    subscribe => File['/etc/sshd_config'],
}

เครื่องหมายลูกศร :

File['/etc/sshd_config'] ~> Service['sshd']

ประกาศผูกมัด

file { '/etc/sshd_config':
   ...
}
~> service { sshd:
    ensure => running,
}

หากคุณต้องการทริกเกอร์reloadแทนrestartให้ปรับการประกาศบริการ:

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.