2013-11-21 22 views
6

Bir tarifte, bir hizmetin yüklü olup olmadığını ve yüklemek için gereken 3 kaynağı bildirmediğini kontrol etmek istiyorum. Hizmetin yüklenip yüklenmediğini doğru şekilde tanımlayan hizmet kaynağını denedim, ancak hizmet yüklenmemişse bir istisna atar.Şef: Hizmetin yüklü olup olmadığını nasıl kontrol ederim?

Burada hangi işlemin kullanılacağından emin değilim. : Hiçbir şey sadece kaynağı atlar, böylece hiçbir zaman idam edilmez, fakat diğer eylemlerden herhangi biri var olmayan bir hizmet üzerinde hareket etmeye çalıştıklarında hata yapar.

Bir hizmetin yüklü olup olmadığını nasıl algılayabilir ve bu bilgilere dayanarak davranabilirim?

Windows üzerinde çalışıyorum, bu uygunsa.

cevap

8

pencereler için servis

https://github.com/opscode/chef/blob/master/lib/chef/provider/service/windows.rb

AFAIU sizin reçeteye onun oldukça straighforward eklenti ithalat tanımlanır şekline bir göz atın:

require 'win32/service' 

ve servis ile varsa o zaman kontrol edebilirsiniz

Win32::Service.exists?(@new_resource.service_name) 

voila - you sadece tarifi tarifi kirletmek için değil ve basit bir yöntem service_exists var kütüphaneye (http://docs.opscode.com/essentials_cookbook_libraries.html) impementasyon koyabilirsiniz ?.

+3

Bu beni doğru yolda yakaladı. İhtiyaç bildirimi olmadan çalışıyorum. Bu e-posta listesi girişi başına: http://lists.opscode.com/sympa/arc/chef/2013-03/msg00223.html ifadesi if:! :: Win32 :: Service.exists? ("Test_service_name") , hizmetin mevcut olup olmadığını doğru bir şekilde algılar. Önde gelen :: Şef isim alanına bakmamasını söyle. – CPS

+0

@Gadolin, CPS'nin yorumundan sözdizimini ekleyebilir misiniz? –

İlgili konular