Расширение DSC - сбой MSFT_xADDomainController при Get-ADDomain PowerShell

Я столкнулся с проблемой при попытке присоединить виртуальную машину (Windows Server 2019) к домену и повысить ее до DC. Развертывание отключается через шаблоны ARM с использованием расширений DSC. Это единый шаблон, который развертывает обе виртуальные машины и настраивает их как контроллеры домена, поэтому все они используют одни и те же учетные данные и т. Д. Я пробовал обновленный Active Directory DSC из здесь.

Я получаю следующую ошибку:

"DSC Configuration 'CreateADBDC' completed with error(s). Following are the first few: Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running. PowerShell DSC resource MSFT_xADDomainController failed to execute Set-TargetResource functionality with error message: Domain 'DOMAIN.CO.UK' could not be found. The SendConfigurationApply function did not succeed

Странно то, что я могу войти в виртуальную машину и присоединиться к домену через пользовательский интерфейс, и он отлично работает, точно так же я могу продвигать его через пользовательский интерфейс, и снова это работает. Настройки DNS правильные, и основной DC разрешаем.

Как я вижу, эта команда выполняется функцией Set-TargetResource в MSFT_xADDomainController.psm1:

Get-ADDomain -Identity $DomainName -Credential $DomainAdministratorCredential

Если я запускаю эту команду на виртуальной машине, которую я пытаюсь продвинуть, команда терпит неудачу, результат ошибки будет:

Get-ADDomain : Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running

Это очень похоже на сообщение об ошибке расширения DSC, которое заставляет меня задаться вопросом, связана ли реальная проблема с модулем PowerShell Active Directory.

Дополнительная информация:

Модуль расширения DSC

            "resources": [
                {
                    "type": "Microsoft.Compute/virtualMachines/extensions",
                    "name": "[concat(variables('dc2name'), '/CreateADBDC')]",
                    "apiVersion": "2019-03-01",
                    "location": "[resourceGroup().location]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Compute/virtualMachines', variables('dc2name'))]",
                        "[resourceId('Microsoft.Compute/virtualMachines/extensions', variables('dc1name'), 'CreateADForest')]"
                    ],
                    "properties": {
                        "publisher": "Microsoft.Powershell",
                        "type": "DSC",
                        "typeHandlerVersion": "2.77",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "WMFVersion": "latest",
                            "configuration": {
                            "url": "[concat(parameters('Artifacts Location'), '/dsc/CreateADBDC.zip')]",
                            "script": "CreateADBDC.ps1",
                            "function": "CreateADBDC"
                            },
                            "configurationArguments": {
                                "DomainName": "[parameters('Domain Name')]",
                                "DNSServer": "[variables('dc1ipaddress')]"
                            }
                        },
                        "protectedSettings": {
                            "configurationArguments": {
                                "adminCreds": {
                                    "UserName": "[parameters('Administrator User')]",
                                    "Password": "[parameters('Administrator Password')]"
                                    },
                                "SafeModeAdminCreds" :{
                                    "UserName": "[parameters('Administrator User')]",
                                    "Password": "[parameters('SafeMode Password')]"
                                    }   
                                },
                            "configurationUrlSasToken": "[parameters('Artifacts Location SAS Token')]"
                        }
                    }
                }
            ]

CreateADBDC.ps1

configuration CreateADBDC {
    Param (
        # Get deployment details
        [Parameter(Mandatory)]
        [String]$DNSServer,
        [Parameter(Mandatory)]
        [String]$DomainName,

        # Credentials
        [Parameter(Mandatory)]
        [System.Management.Automation.PSCredential]$Admincreds,
        [Parameter(Mandatory)]
        [System.Management.Automation.PSCredential]$SafeModeAdminCreds,


        [Int]$RetryCount = 500,
        [Int]$RetryIntervalSec = 3
    )

    Import-DscResource -ModuleName PSDesiredStateConfiguration, xStorage, xNetworking, xActiveDirectory, xPendingReboot
    $Interface = Get-NetAdapter | Where-Object { $_.Name -Like "Ethernet*" } | Select-Object -First 1
    [System.Management.Automation.PSCredential]$DomainCreds = New-Object System.Management.Automation.PSCredential ("${DomainName}\$($Admincreds.UserName)", $Admincreds.Password)
    $features = @("AD-Domain-Services", "RSAT-ADDS-Tools", "RSAT-AD-AdminCenter")

    Node localhost {
        LocalConfigurationManager {
            ActionAfterReboot = 'ContinueConfiguration'
            ConfigurationMode = 'ApplyOnly'
            RebootNodeIfNeeded = $true
        }

        xWaitforDisk Disk2 {
            DiskNumber       = 2
            RetryIntervalSec = $RetryIntervalSec
            RetryCount       = $RetryCount
        }

        xDisk ADDataDisk {
            DiskNumber  = 2
            DriveLetter = "F"
            DependsOn   = "[xWaitForDisk]Disk2"
        }

        WindowsFeatureSet Prereqs {
            Name                 = $features
            Ensure               = "Present"
            IncludeAllSubFeature = $true
        } 

        xDnsServerAddress DnsServerAddress {
            Address        = $DNSServer
            InterfaceAlias = $Interface.Name
            AddressFamily  = "IPv4"
            DependsOn      = "[WindowsFeatureSet]Prereqs"
        }

        xWaitForADDomain DscForestWait {
            DomainName           = $DomainName
            DomainUserCredential = $DomainCreds
            RetryCount           = $RetryCount
            RetryIntervalSec     = $RetryIntervalSec
            DependsOn            = "[WindowsFeatureSet]Prereqs"
        }

        xADDomainController BDC {
            DomainName                    = $DomainName
            DomainAdministratorCredential = $DomainCreds
            SafemodeAdministratorPassword = $SafeModeAdminCreds
            DatabasePath                  = "F:\NTDS"
            LogPath                       = "F:\NTDS"
            SysvolPath                    = "F:\SYSVOL"
            DependsOn                     = "[xWaitForADDomain]DscForestWait"
        }

        xPendingReboot RebootAfterPromotion {
            Name      = "RebootAfterDCPromotion"
            DependsOn = "[xADDomainController]BDC"
        }
    }
}

MSFT_xADDomainController.psm1 - LINK

Вывод файла журнала DSC

VERBOSE: [2019-03-17 22:23:12Z] [VERBOSE] [DC2]: LCM:  [ Start  Resource ]  [[xDNSServerAddress]DnsServerAddress]
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]: LCM:  [ Start  Test     ]  [[xDNSServerAddress]DnsServerAddress]
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]:                            [[xDNSServerAddress]DnsServerAddress] Checking the DNS Server Address ...
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]:                            [[xDNSServerAddress]DnsServerAddress] DNS Servers are not correct. Expected 10.x.x.250, actual 10.x.x.250 10.x.x.249 8.8.8.8
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]: LCM:  [ End    Test     ]  [[xDNSServerAddress]DnsServerAddress] in 0.7500 seconds.
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]: LCM:  [ Start  Set      ]  [[xDNSServerAddress]DnsServerAddress]
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]:                            [[xDNSServerAddress]DnsServerAddress] Checking the DNS Server Address ...
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]:                            [[xDNSServerAddress]DnsServerAddress] DNS Servers are not correct. Expected 10.x.x.250, actual 10.x.x.250 10.x.x.249 8.8.8.8
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]:                            [[xDNSServerAddress]DnsServerAddress] DNS Servers have been set correctly.
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]: LCM:  [ End    Set      ]  [[xDNSServerAddress]DnsServerAddress]  in 0.0940 seconds.
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]: LCM:  [ End    Resource ]  [[xDNSServerAddress]DnsServerAddress]
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]: LCM:  [ Start  Resource ]  [[xWaitForADDomain]DscForestWait]
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]: LCM:  [ Start  Test     ]  [[xWaitForADDomain]DscForestWait]
VERBOSE: [2019-03-17 22:23:13Z] [VERBOSE] [DC2]:                            [[xWaitForADDomain]DscForestWait] Checking for domain DOMAIN.CO.UK ...
VERBOSE: [2019-03-17 22:23:14Z] [VERBOSE] [DC2]:                            [[xWaitForADDomain]DscForestWait] Found domain DOMAIN.CO.UK
VERBOSE: [2019-03-17 22:23:14Z] [VERBOSE] [DC2]: LCM:  [ End    Test     ]  [[xWaitForADDomain]DscForestWait] in 0.6790 seconds.
VERBOSE: [2019-03-17 22:23:14Z] [VERBOSE] [DC2]: LCM:  [ Skip   Set      ]  [[xWaitForADDomain]DscForestWait]
VERBOSE: [2019-03-17 22:23:14Z] [VERBOSE] [DC2]: LCM:  [ End    Resource ]  [[xWaitForADDomain]DscForestWait]
VERBOSE: [2019-03-17 22:23:14Z] [VERBOSE] [DC2]: LCM:  [ Start  Resource ]  [[xADDomainController]BDC]
VERBOSE: [2019-03-17 22:23:14Z] [VERBOSE] [DC2]: LCM:  [ Start  Test     ]  [[xADDomainController]BDC]
VERBOSE: [2019-03-17 22:23:15Z] [VERBOSE] [DC2]:                            [[xADDomainController]BDC] Resolving 'DOMAIN.CO.UK' ...
VERBOSE: [2019-03-17 22:23:57Z] [VERBOSE] [DC2]:                            [[xADDomainController]BDC] Domain 'DOMAIN.CO.UK' is NOT present on the current node.
VERBOSE: [2019-03-17 22:23:57Z] Settings handler status to 'transitioning' 
(C:\Packages\Plugins\Microsoft.Powershell.DSC\2.77.0.0\Status\0.status)
VERBOSE: [2019-03-17 22:23:57Z] [VERBOSE] [DC2]: LCM:  [ End    Test     ]  [[xADDomainController]BDC]  in 43.2480 seconds.
VERBOSE: [2019-03-17 22:23:57Z] [VERBOSE] [DC2]: LCM:  [ Start  Set      ]  [[xADDomainController]BDC]
VERBOSE: [2019-03-17 22:23:57Z] [VERBOSE] [DC2]:                            [[xADDomainController]BDC] Resolving 'DOMAIN.CO.UK' ...
VERBOSE: [2019-03-17 22:24:40Z] [ERROR] Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running.
VERBOSE: [2019-03-17 22:24:40Z] [VERBOSE] [DC2]:                            [[xADDomainController]BDC] Checking if domain 'DOMAIN.CO.UK' is present ...
VERBOSE: [2019-03-17 22:25:22Z] [VERBOSE] [DC2]: LCM:  [ End    Set      ]  [[xADDomainController]BDC]  in 84.3140 seconds.
VERBOSE: [2019-03-17 22:25:22Z] Settings handler status to 'transitioning' 
(C:\Packages\Plugins\Microsoft.Powershell.DSC\2.77.0.0\Status\0.status)
VERBOSE: [2019-03-17 22:25:22Z] [ERROR] PowerShell DSC resource MSFT_xADDomainController  failed to execute 
Set-TargetResource functionality with error message: Domain 'DOMAIN.CO.UK' could not be found. 

person RobC_CTL    schedule 17.03.2019    source источник
comment
у вас есть какие-либо доказательства того, что настройки DNS верны во время работы расширения? во что преобразуется ваше доменное имя из bdc? вы можете также предоставить журналы dsc? с каким идентификатором вы повторно запускаете то же расширение через 20 минут?   -  person 4c74356b41    schedule 18.03.2019
comment
DNS-серверы настроены на уровне VNET, в журнале DSC вы можете видеть, что он запрашивает настройки DNS и возвращается правильный сервер (он жалуется на дополнительные DNS-серверы, которые он находит через VNET). Следующим шагом DSC является dscForestWait, он успешно находит домен. Затем он переходит на xADDomainController, и здесь все идет не так. Добавлю журнал в ветку.   -  person RobC_CTL    schedule 18.03.2019


Ответы (2)


глядя на код модуля, xWaitForADDomain использует специальную функцию -Domain, а не командлет Get-ADDomain (который явно ошибочен в вашем случае), поэтому вам нужно сделать этот вызов (Get-ADDomain) для работы на вашей виртуальной машине. проверить веб-службы Active Directory, как это предлагает? запустите get-addomain с переключателем -debug

person 4c74356b41    schedule 18.03.2019
comment
Спасибо за ответ, я поигрался с файлом и настроил его, чтобы удалить зависимость Get-ADDomain. Теперь виртуальная машина будет повышена до DC, но DSC по-прежнему сообщает об ошибках, поэтому развертывание помечено как неудачное. Я поднял вопрос на DSC GitHub, чтобы посмотреть, могут ли они пролить свет на проблему, поскольку сейчас я, кажется, хожу по кругу. С такой скоростью будет проще развернуть руку :) - person RobC_CTL; 18.03.2019
comment
какие ошибки в его отчетности? вам следует сосредоточиться на том, почему get-addomain не работает прямо в вашей среде. вероятно означает, что что-то не так - person 4c74356b41; 18.03.2019

Хорошо, после долгих размышлений я вернулся к основам и нашел виновника, похоже, что MS пренебрегла портом или двумя из своей документации (ссылка) для настройки межсетевых экранов для работы с AD. Да, порт ADWS (веб-службы Active Directory) отсутствует в списке. Добавьте правило для TCP9389 и вдруг все мои заботы далеко. Спасибо за помощь.

person RobC_CTL    schedule 18.03.2019