4

Azure REST API を使用し、ARM テンプレートを提供して、リソース グループをデプロイしています。仮想マシン リソースには、タイプの拡張機能がありDSCます。コード スニペットは次のとおりです。

{
  "resources": [
    {
      "name": "[concat(variables('VMName'),'/SetupScript')]",
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "location": "[parameters('DNSLocation')]",
      "apiVersion": "2015-05-01-preview",
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('VMName'))]"
      ],
      "tags": {
        "displayName": "SetupScript"
      },
      "properties": {
        "publisher": "Microsoft.Powershell",
        "type": "DSC",
        "typeHandlerVersion": "1.7",
        "settings": {
          "modulesUrl": "[variables('SetupScriptConfigurationFile')]",
          "sasToken": "",
          "configurationFunction": "[variables('SetupScriptConfigurationFunction')]",
          "properties": {
            "DomainName": "[parameters('DomainName')]",
            "DomainAdminUsername": "[parameters('VMAdminUsername')]",
            "DomainAdminPassword": "[parameters('VMAdminPassword')]"
          }
        },
        "protectedSettings": {

        }
      }
    }
  ]
}

呼び出されている DSC 構成を以下に示します。

Configuration DNSConfig
{ 
    param
    ( 
        [string]$NodeName ='localhost',  
        [Parameter(Mandatory=$true)][string]$DomainName,
        [Parameter(Mandatory=$true)][string]$DomainAdminUsername,
        [Parameter(Mandatory=$true)][string]$DomainAdminPassword
    ) 

    #Import the required DSC Resources  
    Import-DscResource -Module xComputerManagement 
    Import-DscResource -Module xActiveDirectory

    $securePassword = ConvertTo-SecureString -AsPlainText $DomainAdminPassword -Force;
    $DomainAdminCred = New-Object System.Management.Automation.PSCredential($DomainAdminUsername, $securePassword);

    Node $NodeName
    { #ConfigurationBlock

        WindowsFeature DSCService {
            Name = "DSC-Service"
            Ensure = "Present"
            IncludeAllSubFeature = $true
        }

        WindowsFeature ADDSInstall 
        {   
            Ensure = 'Present'
            Name = 'AD-Domain-Services'
            IncludeAllSubFeature = $true
        }

        WindowsFeature RSATTools 
        { 
            DependsOn= '[WindowsFeature]ADDSInstall'
            Ensure = 'Present'
            Name = 'RSAT-AD-Tools'
            IncludeAllSubFeature = $true
        }  

        xADDomain SetupDomain {
            DomainName= $DomainName
            DomainAdministratorCredential= $DomainAdminCred
            SafemodeAdministratorPassword= $DomainAdminCred
            DependsOn='[WindowsFeature]RSATTools'
        }
    #End Configuration Block    
    } 
}

DSC スクリプトをローカルで実行する場合、この DSC スクリプトの MOF ファイルを正常に生成するには、ConfigurationData のハッシュテーブルを次のように渡す必要があります。

$ConfigData = @{
    AllNodes = @(
        @{
            NodeName                    = '*'
            PSDscAllowPlainTextPassword = $true
        }
    )
}

DNSConfig -ConfigurationData $ConfigData -DomainName "mydomain.com" ...

ConfigurationData私の問題は、最初に示したARMテンプレートを介してこのタイプを渡したいということです。それは可能ですか?そうでない場合、VM 拡張機能によって実行される DSC スクリプトの ConfigurationData をどのように設定すればよいですか?

ありがとう!

4

2 に答える 2

3

構成データを DSC 拡張機能に渡すには、それを *.psd1 ファイルに保存する必要があります。次に例を示します。

    C:\ PS> Get-Content C:\ConfigurationData.ps1
     @{
        AllNodes = @(
            @{
                NodeName                    = '*'
                PSDscAllowPlainTextPassword = $true
            }
        )
    }

次に、このファイルを VM からアクセスできる場所にアップロードし、テンプレートの保護された設定で URI を渡します。

    "protectedSettings": {
        "DataBlobUri": "https://.../ConfigurationData.psd1"
    }

元の質問に関係のない 2 つの提案:

  • DSC 拡張機能のバージョン 1.7 では、一部の ARM 展開中に断続的なエラーが発生する場合があります。バージョン2.0を見てみることをお勧めします

  • PSDscAllowPlainTextPassword を使用する代わりに、パスワードを暗号化することをお勧めします。DSC 拡張機能は、Azure によって既に VM にデプロイされている暗号化証明書を使用するため、暗号化の設定は非常に簡単です。詳細はこちら

于 2015-07-06T21:57:47.137 に答える