При управлении одним из моих приложений мне нужно распространить небольшой текстовый файл в определенный каталог на нескольких серверах приложений и перезапустить службу, когда будет выпущена новая версия. В моем распоряжении довольно стандартный набор инструментов: SCCM, AD / GPO, Orchestrator и так далее.
Каков наиболее устойчивый с точки зрения эксплуатации способ распространения этого текстового файла на эти серверы, предполагая, что он будет периодически меняться?
Я бы порекомендовал ресурс файла конфигурации желаемого состояния и ресурс службы. Вот пример конфигурации, которую я создал:
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
При использовании ресурса файла конфигурации желаемого состояния, предложенного @Davidw, я также рекомендую использовать свойство Checksum (https://technet.microsoft.com/en-us/library/dn282129.aspx).
Если вы не используете свойство Checksum, файл никогда не будет обновлен, потому что вы сравниваете только имя файла или каталога, которые, как я предполагаю, вы не меняете, когда вносите изменения в файл. Указание свойства Checksum указывает DSC внести изменения, если SHA-1, SHA-256, SHA-512, createdDate или modifiedDate отличаются.
По связанной теме, использование единого файлового ресурса DSC, рекомендованного @Davidw, будет работать, но я рекомендую настроить DSC с централизованным веб-сервером, чтобы вы могли управлять своими файлами / состояниями из центральной точки распространения (http://www.systemcentercentral.com/day-1-intro-to-powershell-dsc-and-configuring-your-first-pull-server/). Легче управлять файлами MOF из центра, иначе вы можете потерять отслеживание отдельных файлов MOF, работающих на каждом сервере.
Полное раскрытие информации - я разрабатываю программное обеспечение для управления конфигурацией для Windows, которое решает указанную выше проблему, но я также думаю, что эти шаги тоже будут работать.
Я бы установил событие уведомления и запустил сценарий, чтобы скопировать файл и перезапустить службу. Видеть https://gallery.technet.microsoft.com/scriptcenter/Powershell-FileSystemWatche-dfd7084b
Просто установите и забудьте. Для подобных вещей вы также можете добавить запись в журнал событий.