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
カスタムVHDイメージの作成にはあまり熱心ではありません。可能であれば、標準のMicrosoftテンプレートから始めることができればと思います。
結局のところ、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"
より詳細な例 それを機能させるためのテンプレートとして使用しました。
Azure Automation DSCは、これらすべての夢を実現します。コピーが必要な場合に役立つ基本構成がありますか?