#windows #powershell #dsc
#Windows #powershell #dsc
Вопрос:
Я попробовал то, что казалось простым подходом, и добавил ресурс пакета в конфигурацию моего узла для MongoDB MSI. Я получил следующую ошибку: «Не удалось получить поток https для файла».
Вот конфигурация пакета, которую я пробовал:
package MongoDB {
Name = "MongoDB 3.6.11 2008R2Plus SSL (64 bit)"
Path = "https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.6.11-signed.msi"
ProductId = "88F7AA23-BDD2-4EBE-9985-EBB5D2E23E83"
Arguments = "ADDLOCAL=`"all`" SHOULD_INSTALL_COMPASS=`"0`" INSTALLLOCATION=`"C:MongoDBServer3.6`""
}
(У меня там были $ConfigurationData
ссылки, но для простоты я заменил их литералами)
Я получаю следующую ошибку: Could not get the https stream for file
Возможная проблема с версией TLS? Я обнаружил, что Invoke-WebRequest
необходимо следующее, чтобы заставить его работать с тем же URL-адресом загрузки mongo. Есть ли способ сделать это с помощью ресурса пакета? [Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
Ответ №1:
Использование nmap
для опроса обоих nodejs.org и fastdl.mongodb.org (который на самом деле находится в cloudfront) действительно, поддержка TLS отличалась. Узел по-прежнему поддерживает TLS версии 1.0, который, как оказалось, работает с PowerShell. Но сайт MongoDB поддерживает только TLS версий 1.1 или 1.2.
Как я упоминал в своем вопросе, я подозревал, что настройка .Протокол сетевой безопасности работает, и это действительно так. Нет способа добавить произвольный скрипт к ресурсу пакета DSC, поэтому мне нужно было создать блок сценария только для запуска этого кода, и чтобы ресурс пакета зависел от него.
Это то, что я должен работать:
Node $AllNodes.Where{$_.Role -contains 'MongoDBServer'}.NodeName {
Script SetTLS {
GetScript = { @{ Result = $true } }
SetScript = { [Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" }
TestScript = { $false } #Always run
}
package MongoDB {
Ensure = 'Present'
Name = 'MongoDB 3.6.11 2008R2Plus SSL (64 bit)'
Path = 'https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.6.11-signed.msi'
ProductId = ''
Arguments = 'ADDLOCAL="all" SHOULD_INSTALL_COMPASS="0" INSTALLLOCATION="C:MongoDBServer3.6"'
DependsOn = '[Script]SetTLS'
}
...