我正在尝试使用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方式是什么?
答案 0 :(得分:1)
你试过了吗?
windows_feature 'RDS-RD-Server' do
provider Chef::Provider::WindowsFeature::ServerManagerCmd
end