如何使用puppet安装/卸载Windows服务?

时间:2014-01-22 06:25:17

标签: windows-services puppet

我想在Puppet上安装/卸载Windows服务,但我找不到内置功能。我想出了下面的脚本,它工作正常,但很难看。

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

有更好的方法吗?我试图搜索插件但尚未找到它。

2 个答案:

答案 0 :(得分:3)

我不认为Puppet内置了一些东西。 "手动"的通用方式在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]$?)",
}

答案 1 :(得分:-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'],
    }