Назад | Перейти на главную страницу

Включите CertReq в PowerShell DSC только при необходимости

В настоящее время я использую 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 самостоятельно.