在管理我的一个应用程序时,我需要将一个小文本文件分发到多个应用程序服务器上的特定目录中,并在推出新版本时重新启动服务。我拥有一套相当标准的工具,SCCM、AD/GPO、Orchestrator 等。
假设该文本文件会定期更改,那么将此文本文件分发到这些服务器的最具操作性的可持续方式是什么?
答案1
我建议使用所需状态配置文件资源和服务资源。这是我创建的示例配置:
Configuration UpdateApplicationFile
{
Param ($computername, $sourcefilepath, $destination)
node $computername
{
Service suspendservice
{
name = appservice
State = paused
}
file applicationfile
{
ensure = "present"
type = "file"
sourcepath = $sourcefilepath
DestinationPath = $destination
DependsOn = "[service]suspendservice"
}
service startservice
{
name = appservice
State = started
DependsOn = "[file]applicationfile"
}
}
}
DSC 文件资源 https://technet.microsoft.com/en-us/library/dn282129.aspx
答案2
我会设置一个通知事件并运行一个脚本来复制文件并重新启动服务。请参阅https://gallery.technet.microsoft.com/scriptcenter/Powershell-FileSystemWatche-dfd7084b
只需设置并忘记它。对于此类事情,您可能还需要添加事件日志条目
答案3
如果使用 @Davidw 建议的所需状态配置文件资源,我建议也使用 Checksum 属性(https://technet.microsoft.com/en-us/library/dn282129.aspx)。
如果您不使用 Checksum 属性,则文件将永远不会更新,因为您只比较文件或目录名称,我假设您在编辑文件时不会更改这些名称。指定 Checksum 属性会告诉 DSC,如果 SHA-1、SHA-256、SHA-512、createdDate 或 modifiedDate 不同,则进行更改。
在相关主题上,使用 @Davidw 推荐的单个 DSC 文件资源是可行的,但我建议使用集中式 Web 服务器设置 DSC,以便您可以从中央分发点管理文件/状态(http://www.systemcentercentral.com/day-1-intro-to-powershell-dsc-and-configuring-your-first-pull-server/)。从中心点管理 MOF 文件更加容易,否则您可能会无法跟踪每台服务器上运行的单个 MOF 文件。
全面披露 - 我开发了用于 Windows 的配置管理软件来解决上述问题,但我还认为这些步骤也将起作用。