Как использовать ресурс пакета DSC для установки MongoDB? - PullRequest
0 голосов
/ 23 марта 2019

Я попробовал то, что казалось простым подходом, и добавил ресурс Package в конфигурацию моего узла для 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:\MongoDB\Server\3.6`""
    }

(у меня там было $ConfigurationData ссылок, но для простоты заменены литералы)

Я получаю следующую ошибку: Could not get the https stream for file

Возможная проблема с версией TLS? Я обнаружил, что Invoke-WebRequest необходимо следующее, чтобы он работал с тем же URL-адресом загрузки монго. Есть ли способ сделать это с ресурсом пакета? [Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"

1 Ответ

0 голосов
/ 26 марта 2019

Используя nmap для опроса как nodejs.org, так и fastdl.mongodb.org (который на самом деле находится на облачном фронте), действительно, поддержка TLS разная.Узел по-прежнему поддерживает TLS версии 1.0, которая, как оказалось, работает с PowerShell.Но сайт MongoDB поддерживает только TLS версии 1.1 или 1.2.

Как я уже упоминал в своем вопросе, я подозревал, что настройка протокола безопасности .Net работает, и действительно так и есть.Нет никакого способа добавить произвольный сценарий к ресурсу DSC package , поэтому мне нужно было создать блок сценария только для запуска этого кода, чтобы ресурс пакета зависел от него.

Эточто я получил на работу:

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:\MongoDB\Server\3.6"'
    DependsOn = '[Script]SetTLS'
}
...
...