为windows_feature指定Chef提供程序

时间:2013-09-06 02:00:24

标签: ruby windows-server-2008 chef

我正在尝试使用Chef(chef-solo)来管理我的Windows Server 2008 R2安装。 Chef提供windows_feature以向Windows服务器添加角色/功能。默认情况下,windows_feature使用DISM来安装角色。但是,据我所知,并非所有角色(例如RDS-RD-Server)都可以通过DISM添加。

我可能会使用Chef::Provider::WindowsFeature::ServerManagerCmd(在Windows食谱自述文件中标识:https://github.com/opscode-cookbooks/windows),但它看起来不像是真正的类(浏览那里的源代码)。此外,不推荐使用servermanagercmd(尽管它可以工作)。

我不介意使用powershell块添加角色,但我很难确保幂等性。似乎not_if命令shell是一些奇怪的mingwin shell而不是CMD。

以下是我尝试使用PowerShell(不起作用)的示例:

powershell "install_rds_server" do
  code %Q{
    Import-Module Servermanager
    Add-WindowsFeature RDS-RD-Server
  }.strip
  not_if %Q{
    powershell "Import-Module Servermanager; $check = get-windowsfeature -name RDS-RD-Server; if ($check.Installed -ne \"True\") { exit 1 }"
  }.strip
end

添加此角色的推荐Chef方式是什么?

1 个答案:

答案 0 :(得分:1)

你试过了吗?

windows_feature 'RDS-RD-Server' do
  provider Chef::Provider::WindowsFeature::ServerManagerCmd
end