所以我使用的是 DSC 推送模式
我每天有大约 200 次部署到多个环境 (DEV/INT/QA/PROD)
每次部署时,我都想确保每个服务器都配置正确
所以我自动运行 DSC 作为我部署的一部分,完全没有用户交互
所以我想知道是否有办法知道在运行 DSC 配置后是否需要重新启动/重启
基本上在运行这条线之后
Start-DscConfiguration -Wait -Force -Path .\SomePath
Run Code Online (Sandbox Code Playgroud)
我如何配置包的示例
Package MVC3
{
Name = "Microsoft ASP.NET MVC 3"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe"
ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA"
Arguments = "/q"
DependsOn = "[WindowsFeature]IIS"
Credential = $Credential
}
Package MVC4
{
Name = "Microsoft ASP.NET MVC 4 Runtime"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC4Setup.exe"
ProductId = "942CC691-5B98-42A3-8BC5-A246BA69D983"
Arguments = "/q"
DependsOn = "[Package]MVC3"
Credential = $Credential
}
Run Code Online (Sandbox Code Playgroud) 来自MSDN
RebootNodeIfNeeded:目标节点上的某些配置更改可能需要重新启动它才能应用更改。值为“true”时,此属性将立即重新启动节点,而不会发出警告。如果为“false”,则配置将完成,但必须手动重新启动节点以使更改生效。
所以我的理解是,即使需要重启,DSC 也应该运行所有配置
但在我的情况下,这不是真的,在安装包后,有时 DSC 被标记为重新启动并且 DSC 不运行其余的配置
我必须再次手动执行命令才能运行其余配置
Start-DscConfiguration -Wait -Force -Path .\SomePath
Run Code Online (Sandbox Code Playgroud)
我想强制 DSC 运行所有配置,然后通知我是否需要重新启动服务器
我如何配置包的示例
LocalConfigurationManager
{
RebootNodeIfNeeded = $false
}
Package MVC3
{
Name = "Microsoft ASP.NET MVC 3"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe"
ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA"
Arguments = "/q"
DependsOn = "[WindowsFeature]IIS"
Credential = $Credential
}
Package MVC4
{
Name = "Microsoft ASP.NET MVC 4 Runtime"
Ensure = "Present"
Path = "$Env:SystemDrive\AspNetMVC4Setup.exe"
ProductId = "942CC691-5B98-42A3-8BC5-A246BA69D983"
Arguments = "/q" …Run Code Online (Sandbox Code Playgroud)