2014-01-22 143 views
1

我想在Puppet上安裝/卸載windows服務,但我找不到內置的這樣做的功能。我想出了下面的腳本,它工作正常,但很醜。如何使用puppet安裝/卸載windows服務?

exec{ "install_service" : 
    command => "${Sys32}\\cmd.exe /c installutil -i /LogFile=\"${logFile}\" \"${sourcePath}\" | exit 0", 
    path => $Framework4x64, 
} 

有沒有更好的方法來做到這一點?我試圖尋找一個插件,但還沒有找到它。

+0

當你說「安裝/卸載Windows服務」你是指安裝木偶代理或其他應用程序? – rojs

+0

我想安裝另一個應用程序。 – Anonymous

回答

-1

閱讀安裝文檔packages using puppet on Windows

這與在* nix上使用包資源的方式基本相同。從他們的文檔實例:

例如他們給:

package { 'mysql': 
     ensure   => '5.5.16', 
     source   => 'N:/packages/mysql-5.5.16-winx64.msi', 
     install_options => ['INSTALLDIR=C:\mysql-5.5'], 
    } 
+0

'package'與msi或安裝文件一起工作,但在我的情況下,它是一個Windows服務,我沒有那個文件。從示例中,我使用installutil.exe並將路徑傳遞給該文件並安裝該服務。 – Anonymous

2

我不認爲有內置木偶東西。爲「手動」在Windows中創建一個服務的通用的方法是使用sc.exe實用程序(注意後的空間和缺乏之前=字符):

exec { "install_service" : 
    command => "${Sys32}\\sc.exe create MyService start= auto binPath= \"C:\\path\\to\\your.exe\"", 
    path => $Framework4x64, 
    unless => "${Sys32}\\sc.exe query MyService", 
} 

或PowerShell的(優選使用PowerShell provider ):

exec { "install_service" : 
    command => "New-Service -Name MyService -StartupType Automatic -BinaryPathName \"C:\\path\\to\\your.exe\"", 
    path  => $Framework4x64, 
    provider => 'powershell', 
    unless => "Get-Service MyService; exit (1-[int]$?)", 
} 
相關問題