web-dev-qa-db-ja.com

Windowsファイアウォールポートを開いた状態でAzure VMを作成しますか?

Azure VMのセットアップ、Active Directoryドメインへの追加、およびその他の多くの設定のセットアップを自動化するPowershellスクリプトに取り組んでいます。

アイデアは、手動の操作(RDPでログオンする必要がないことを含む)なしで、必要に応じてVMを起動して強制終了できるようにすることです。

これが、VMの作成に使用するPowershellコマンドです。これは正常に機能します。

$vm = New-AzVM `
    -ResourceGroupName $resourceGroup `
    -Location $LocationName `
    -Name $VMName `
    -Credential $Credential `
    -VirtualNetworkName $NetworkName `
    -SubnetName $SubnetName `
    -PublicIpAddressName $VMName `
    -SecurityGroupName "name_of_existing_nsg" `
    -OpenPorts 80,135,3389 `
    -Image "MicrosoftWindowsServer:WindowsServer:2019-Datacenter-smalldisk:latest" `
    -Size $VMSize `
    -DefaultProfile $context

VMを既存のネットワーク、サブネット、およびネットワークセキュリティグループに追加します。これにより、内部でほとんどすべての通信が可能になります。

スクリプトは、同じサブネット上のVMから実行されます。

ただし、VMを作成したら、それをドメインに追加したいと思います。私は成功せずに次の手順を試しました:

  • Add-Computer VMのWindowsファイアウォールで必要なRPCポートに接続できないため、機能しません。 NSGルールは問題ありませんが、Windowsファイアウォールで開いたポートでVMを作成する方法がわかりません。DNS名の代わりにローカルIPアドレスを使用しても役に立ちません。
 Add-Computer `
    -DomainName "fully-qualified-domain" `
    -Credential $domainCredential `
    -LocalCredential $Credential `
    -ComputerName $nic.IpConfigurations[0].PrivateIpAddress `
    -Server "dc01.fully-qualified-domain" `
    -Restart `
    -Force
 Add-Computer : Cannot establish the WMI connection to the computer '10.1.2.3' with the following error message: The
 RPC server is unavailable. (Exception from HRESULT: 0x800706BA).
At line:1 char:1
+ Add-Computer `
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (10.1.2.3:String) [Add-Computer], InvalidOperationException
    + FullyQualifiedErrorId : AddComputerException,Microsoft.PowerShell.Commands.AddComputerCommand
  • VM拡張機能を使用してVMを自分のドメイン(Azureドメインではなく、Azure VMで実行されるドメイン)に追加します)。そのような拡張機能がある場合、またはそれを機能させる方法。
  • VM拡張機能を使用して、VMからローカルコマンドを実行できるようにします(ファイアウォールポートを開いたり、ドメインに直接追加したりするなど)。

カスタムVHDイメージの作成にはあまり熱心ではありません。可能であれば、標準のMicrosoftテンプレートから始めることができればと思います。

1

結局のところ、blobストレージからスクリプトを取得してVM上でそのスクリプトを実行できるスクリプト拡張機能があります。このスクリプトをBLOBストレージに保存します。

Import-Module Microsoft.PowerShell.Management

# Add the computer to the domain

# Domain account that will add the VM to the domain:
$domainUser = "some-automation-account@fully-qualified-domain"
$domainUserSecurePassword = ConvertTo-SecureString "password" -AsPlainText -Force

$domainCredential = New-Object `
    System.Management.Automation.PSCredential ($domainUser, $domainUserSecurePassword);

Add-Computer `
    -DomainName "fully-qualified-domain" `
    -Credential $domainCredential `
    -ComputerName (Get-ComputerInfo).CsName `
    -Server "dc01.fully-qualified-domain" `
    -Restart `
    -Force 

...そして、次のPowershellコマンドを使用してVMでスクリプトを開始します:

Set-AzVMCustomScriptExtension `
    -Name "CustomScriptExtension" `
    -ResourceGroupName $resourceGroup `
    -VMName $VMName `
    -Location $LocationName `
    -StorageAccountName $scriptStorageAccount `
    -StorageAccountKey $scriptStorageKey `
    -ContainerName "powershell-scripts" `
    -FileName "setup-vm.ps1" `
    -Run "setup-vm.ps1"

より詳細な例 それを機能させるためのテンプレートとして使用しました。

1

Azure Automation DSCは、これらすべての夢を実現します。コピーが必要な場合に役立つ基本構成がありますか?

0
usabletech