puppet: restart layanan paksa setelah file konfigurasi diubah

21

bagaimana saya bisa memastikan bahwa jika versi baru file konfigurasi diunduh melalui wayang dari master repositori ke salah satu server yang dikelola, layanan yang relevan akan dimulai kembali.

Skenario khas - katakanlah ada konfigurasi munin atau apache baru. klien boneka menemukannya, menimpa file lokal ... dan ... - bagaimana memastikan layanan restart / dimuat ulang?

Terima kasih banyak!

pQd
sumber

Jawaban:

23

Alternatif untuk memberi tahu adalah berlangganan:

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

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

Perbedaannya adalah bahwa hubungan tersebut digambarkan dari ujung yang lain. Misalnya, Anda dapat membuat apache berlangganan /etc/apache/httpd.conf, tetapi Anda akan membuat file vhost memberi tahu apache, karena kelas apache Anda tidak akan tahu tentang setiap vhost yang Anda miliki.

Situasi dua ujung yang serupa berlaku untuk meminta dan sebelumnya. Ini hanya masalah yang lebih masuk akal dalam situasi tertentu.

Seperti yang disebutkan Chad, jika Anda menemukan wayang terus-menerus mencoba memulai layanan Anda, maka Anda perlu menambahkan parameter pola, yang merupakan regex untuk diterapkan terhadap daftar proses. Secara default boneka akan berhenti dan mulai memulai kembali layanan. Jika Anda menambahkan "hasrestart => true", maka itu akan menggunakan perintah yang ditentukan dalam parameter "restart" untuk memulai kembali layanan.

David Pashley
sumber
22

sepertinya saya telah menemukan sesuatu:

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

service { sshd:
    ensure => running
}

kita akan melihat bagaimana itu akan bekerja. Pokoknya pikiran Anda tentang masalah ini dipersilakan.

pQd
sumber
1
Iya nih. Anda dapat menemukan detailnya di Referensi Jenis Wayang di bawah "Metaparameters" ( reductivelabs.com/trac/puppet/wiki/TypeReference#metaparameters )
Chad Huneycutt
1
Oh, dan tergantung pada OS Anda, Anda mungkin harus bermain dengan parameter hasstatus, hasrestart, dan / atau pola dari jenis layanan.
Chad Huneycutt
2

(Saya tahu ini adalah pertanyaan yang sangat lama, tetapi hanya berpikir saya akan memasukkan dua sen saya dengan (menurut saya) cara yang lebih mudah untuk melakukannya)

Jangan ragu untuk menggunakan notasi panah juga:

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

atau

File['/etc/sshd_config'] ~> Service['sshd']
Ethan Brouwer
sumber
dalam contoh pertama Anda, Anda tidak perlu memberi tahu opsi jika Anda menggunakan panah
c4f4t0r
Ups. Saya hanya menyalin dan lupa untuk mengeluarkannya.
Ethan Brouwer
1

Ini berfungsi untuk 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"]
            }

}
CMag
sumber
0

Ada beberapa notasi yang setara:

Beri tahu :

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

service { sshd:
    ensure => running
}

Berlangganan :

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

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

Notasi panah :

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

Pernyataan rantai

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

Jika Anda ingin memicu reloadalih-alih restart, sesuaikan deklarasi layanan:

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}
Tombart
sumber