我正在尝试使用 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
添加此角色的推荐厨师方法是什么?