web-dev-qa-db-ja.com

可変ネットワークデバイスエイリアスとPowerShellDSC

新しいVMをAzureにデプロイし、それを新しいドメインのドメインコントローラーにするために使用するAzure Resource ManagerとDSCスクリプトのセットがあります。これらはしばらくの間、正常に機能しています。しかし、DSC部分は失敗しています。

問題は、VMのネットワークインターフェイスに割り当てられたエイリアスにあると思います。私のDSCスクリプトには、DNSの自己を指すようにVMを変更するための次のセクションがあります。

  xDnsServerAddress DnsServerAddress 
        { 
            Address        = '127.0.0.1' 
            InterfaceAlias = 'Ethernet'
            AddressFamily  = 'IPv4'
        }

この問題は、仮想マシンのネットワークインターフェイスが実際には「イーサネット2」または「イーサネット3」のエイリアスで作成されており、エイリアスが一致する必要があるために発生しているようです。 VMには他のネットワークカードはなく、どの時点でも追加していません。さらに奇妙なことに、このネットワークインターフェイスの名前を「イーサネット」に変更しようとすると、これへの参照が見つからなくても、その名前のネットワークインターフェイスがすでに存在することがわかります。

したがって、この作業を機能させるには、インターフェイスに「イーサネット」という名前が付けられていない理由、またはマシン上の唯一のネットワークインターフェイスにDNSを設定できるようにDSCスクリプトを作成する方法を見つける必要があります。何か案は。

編集:

これは、デバイスマネージャーがNICをネットワークアダプター#2としてラベル付けしたという事実に関連しているようですが、アダプター#1はなく、中に追加された理由もわかりません。展開プロセス。これは、この展開内のすべてのVMで発生するようです(ただし、DCを破壊するだけです)。

Network Cards

これを作成するために使用するARMスクリプトも以下に含めました。これは、MSGithubテンプレートから直接取得したものです。

{
      "apiVersion": "2015-05-01-preview",
      "type": "Microsoft.Network/networkInterfaces",
      "name": "dc-nif",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "Microsoft.Network/virtualNetworks/vnet"
      ],
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig",
            "properties": {
              "privateIPAllocationMethod": "Static",
              "privateIPAddress": "[variables('dnsServerPrivateIp')]",
              "subnet": {
                "id": "[variables('BackEndSubnet-id')]"
              }
            }
          }
        ]
      }
    },

    {
      "apiVersion": "2015-05-01-preview",
      "type": "Microsoft.Compute/virtualMachines",
      "name": "dc-vm",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts',parameters('newStorageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces','dc-nif')]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "Standard_A2"
        },
        "osProfile": {
          "computername": "dc",
          "adminUsername": "[parameters('adminUsername')]",
          "adminPassword": "[parameters('adminPassword')]"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "[variables('imagePublisher')]",
            "offer": "[variables('imageOffer')]",
            "sku": "[variables('imageSku')]",
            "version": "latest"
          },
          "osDisk": {
            "name": "osdisk",
            "vhd": {
              "uri": "[concat('http://',parameters('newStorageAccountName'),'.blob.core.windows.net/vhds/dc-vm-os-disk.vhd')]"
            },
            "caching": "ReadWrite",
            "createOption": "FromImage"
          },
          "dataDisks": [
            {
              "name": "dc-vm-data-disk",
              "vhd": {
                "Uri": "[concat('http://',parameters('newStorageAccountName'),'.blob.core.windows.net/vhds/dc-vm-data-disk.vhd')]"
              },
              "caching": "None",
              "createOption": "Empty",
              "diskSizeGB": "100",
              "lun": 0
            }
          ]
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces','dc-nif')]"
            }
          ]
        }
      },
      "resources": [
        {
          "type": "Microsoft.Compute/virtualMachines/extensions",
          "name": "dc-vm/createadforest",
          "apiVersion": "2015-05-01-preview",
          "location": "[resourceGroup().location]",
          "dependsOn": [
            "[resourceId('Microsoft.Compute/virtualMachines', 'dc-vm')]"
          ],
          "properties": {
            "publisher": "Microsoft.Powershell",
            "type": "DSC",
            "typeHandlerVersion": "1.10",
            "settings": {
              "ModulesUrl": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/active-directory-new-domain/CreateADPDC.ps1.Zip",
              "ConfigurationFunction": "CreateADPDC.ps1\\CreateADPDC",
              "Properties": {
                "DomainName": "[parameters('domainName')]",
                "AdminCreds": {
                  "UserName": "[parameters('adminUsername')]",
                  "Password": "PrivateSettingsRef:AdminPassword"
                }
              }
            },
            "protectedSettings": {
              "Items": {
                "AdminPassword": "[parameters('adminPassword')]"
              }
            }
          }
        }
      ]
    },
4
Sam Cogan

変数をDSCパラメータに渡すことで、動的な情報を使用できます。この場合は、ホストのネットワークインターフェイスステータスの仮定を渡すことによって行います。

例えば.

 xDnsServerAddress DnsServerAddress
    { 
        Address        = '127.0.0.1' 
        InterfaceAlias = $firstActiveAdapter.InterfaceAlias
        AddressFamily  = 'IPv4'
    }

$ firstActiveAdapter変数が次のように作成された場所。

$firstActiveAdapter = Get-NetAdapter -InterfaceDescription "Microsoft Hyper-V Network Adapter*" | Sort-Object -Property ifIndex | Select-Object -First 1

上記のコマンドは、インストールされているアダプタのリストから、インターフェイスインデックスプロパティの順序で最初のアダプタをプルします。

コマンドは、システムに少なくとも1つのネットワークアダプタが存在するときに実行する必要があります。コマンドを成功させるために、ネットワーク上でまだアクティブである必要はありません。

2
Persistent13