В настоящее время я использую CertificateDSC CertReq ресурс для создания запроса на сертификат в конфигурации DSC. Я новичок в DSC, я проверяю его, используя подход push, и мой рабочий процесс состоит из генерации mof и запуска Start-DscConfiguration
или Update-DscConfiguration
потом.
Всякий раз, когда я запускаю конфигурацию DSC или обновляю ее, у CA запрашивается новый сертификат. Очевидно, что мои намерения не в этом. Как бы вы добавили блок PowerShell DSC, который оценивается на узле и динамически проверяет всякий раз, когда необходимо применить блок ресурсов?
Идея состоит в том, чтобы иметь блок, который проверяет наличие подходящего сертификата и генерирует какой-то флаг, который оценивается перед блоком CertReq.
В псевдокоде это было бы похоже на следующее. Выполнение этого в DSC, похоже, не работает.
Configration X {
Import-DscResource -ModuleName CertificateDSC
if((Get-ChildItem Cert:\LocalMachine\My | Where $condition).count -gt 0){
CertReq psCert {
# Data
}
}
}
Итак, во-первых, идея о том, что вы хотите выполнить условную проверку перед выполнением ресурса, противоречит идемпотентному использованию DSC. Этот код выполняется во время согласования для генерации MOF, но на этом этапе он замораживается (как вы уже выяснили).
Я смотрел на код для этого модуля DSC и из этого я могу сказать, что он уже выполняет эту проверку, следует ли делать новый запрос.
Тогда вам следует просто использовать CertReq
с необходимыми параметрами, а модуль должен обрабатывать все условные выражения.
Если на этом этапе он все еще генерирует повторяющиеся запросы, отредактируйте свой вопрос, включив эти данные, и / или отладить выполнение DSC самостоятельно.