kukla: yapılandırma dosyası değiştirildikten sonra servisin yeniden başlatılmasını zorla


21

Konfigürasyon dosyasının yeni versiyonunun ana depodan yönetilen sunuculardan birine kukla ile indirilmesi durumunda ilgili hizmetin yeniden başlatıldığından nasıl emin olabilirim.

tipik senaryo - diyelim ki yeni munin veya apache config var. kukla istemcisi bunu keşfeder, yerel dosyaların üzerine yazar ... ve ... - hizmetin yeniden başlatıldığından / yeniden yüklendiğinden nasıl emin olunur?

çok teşekkürler!

Yanıtlar:


23

Bildirmek için bir alternatif abone olmaktır:

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

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

Aradaki fark, ilişkinin diğer taraftan tanımlanmasıdır. Örneğin, apache'nin /etc/apache/httpd.conf dosyasına abone olmasını sağlayabilirsiniz, ancak bir vhost dosyasını apache sınıfına sahip olduğunuz her vhost'u bilmeyeceğinden, apache'ye bildirirsiniz.

Benzer bir iki uçlu durum talep etmek için ve öncesinde geçerlidir. Belirli bir durumda daha mantıklı olan sadece bir mesele.

Chad'in dediği gibi, kuklaınızı hizmetinize sürekli olarak başlamaya çalışırken bulursanız, o zaman süreç listesine karşı uygulamak için bir regex olan bir kalıp parametresi eklemeniz gerekir. Varsayılan olarak kukla bir durdurma yapacak ve bir servisi yeniden başlatmaya başlayacaktır. "Hasrestart => true" eklerseniz, hizmeti yeniden başlatmak için "restart" parametresinde belirtilen komutu kullanır.


22

Görünüşe göre bir şey buldum:

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

service { sshd:
    ensure => running
}

Bunun nasıl çalışacağını göreceğiz. Neyse, konuyla ilgili düşüncelerinizi bekliyoruz.


1
Evet. Sen "Metaparameters" (altında Kukla Tipi Referans ayrıntıları bulabilirsiniz reductivelabs.com/trac/puppet/wiki/TypeReference#metaparameters )
Çad Huneycutt

1
Oh, ve işletim sisteminize bağlı olarak, servis tipinin hasstatus, hasrestart ve / veya pattern parametreleriyle oynamak zorunda kalabilirsiniz.
Chad Huneycutt,

2

(Bunun süper eski bir soru olduğunu biliyorum, ama sadece iki kuruşa (benim görüşüme göre) yapmanın daha kolay bir yolunu koyacağımı düşündüm)

Ok gösterimini de kullanmaktan çekinmeyin:

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

veya

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

ilk örneğinizde oku kullanıyorsanız bildirme seçeneğine ihtiyacınız yoktur
c4f4t0r

Hata. Sadece kopyaladım ve çıkarmayı unuttum.
Ethan Brouwer

1

Bu Solaris 10 için çalışıyor :)

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

Birden fazla eşdeğer gösterim vardır:

Bildir :

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

service { sshd:
    ensure => running
}

Abone Ol :

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

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

Ok gösterimi :

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

Zincirleme beyannameleri

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

reloadBunun yerine tetiklemek istiyorsanız restartservis bildirimini ayarlayın:

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.