ども、かっぱです。
tl;dr
引続き、PowerShell で Azure を操作するメモ。
操作する環境は以下の通り。
PS C:\Users\Administrator\Downloads> [System.Environment]::OSVersion Platform ServicePack Version VersionString -------- ----------- ------- ------------- Win32NT 6.3.9600.0 Microsoft Windows NT 6.3.9600.0 PS C:\Users\Administrator\Downloads> $PSVersionTable Name Value ---- ----- PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.42000 BuildVersion 6.3.9600.17400 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2
参考
- https://azure.microsoft.com/ja-jp/documentation/articles/virtual-networks-create-vnet-classic-netcfg-ps/
- http://hensa40.cutegirl.jp/archives/677
仮想ネットワークを作って、その中に仮想マシンを作る
要件
- 仮想ネットワーク(クラシック)を作成(サブネットは 2 つ)
- パラメータを指定して仮想マシンを作成する(OS は Windows Server 2012 R2)
- 仮想マシン(クラシック)は
New-AzureVM
コマンドを利用して作成する - 作成した VM にアクセスしてみる
仮想ネットワークの作成
- 既存の設定を書き出す(事前に仮想ネットワークを 1 つ作っておく)
Get-AzureVNetConfig -ExportToFile C:\Users\Administrator\Documents\NetworkConfig.xml
- ouput
XMLConfiguration OperationDescription OperationId OperationStatus ---------------- -------------------- ----------- --------------- <?xml version="1.0" encodi... Get-AzureVNetConfig xxxxxxxx-xxxx-xxxx-xxxx-a2... Succeeded
- 確認
PS C:\Users\Administrator\Documents> cat NetworkConfig.xml <?xml version="1.0" encoding="utf-8"?> <NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration"> <VirtualNetworkConfiguration> <Dns /> <VirtualNetworkSites> <VirtualNetworkSite name="Group your-service01 TestVNet01" Location="Japan West"> <AddressSpace> <AddressPrefix>192.168.0.0/16</AddressPrefix> </AddressSpace> <Subnets> <Subnet name="FrontEnd"> <AddressPrefix>192.168.1.0/24</AddressPrefix> </Subnet> </Subnets> </VirtualNetworkSite> </VirtualNetworkSites> </VirtualNetworkConfiguration> </NetworkConfiguration>
- 編集、確認(サブネット
BackendEnd
を一つ追加してみた)
PS C:\Users\Administrator\Documents> cat NetworkConfig.xml <?xml version="1.0" encoding="utf-8"?> <NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration"> <VirtualNetworkConfiguration> <Dns /> <VirtualNetworkSites> <VirtualNetworkSite name="Group your-service01 TestVNet01" Location="Japan West"> <AddressSpace> <AddressPrefix>192.168.0.0/16</AddressPrefix> </AddressSpace> <Subnets> <Subnet name="FrontEnd"> <AddressPrefix>192.168.1.0/24</AddressPrefix> </Subnet> <Subnet name="BackendEnd"> <AddressPrefix>192.168.2.0/24</AddressPrefix> </Subnet> </Subnets> </VirtualNetworkSite> </VirtualNetworkSites> </VirtualNetworkConfiguration> </NetworkConfiguration>
- 適用
Set-AzureVNetConfig -ConfigurationPath C:\Users\Administrator\Documents\NetworkConfig.xml
- ouput
OperationDescription OperationId OperationStatus -------------------- ----------- --------------- Set-AzureVNetConfig xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
- 確認
Get-AzureVNetSite -VNetName "Group your-service01 TestVNet01"
- ouput
AddressSpacePrefixes : {192.168.0.0/16} Location : Japan West AffinityGroup : DnsServers : {} GatewayProfile : GatewaySites : Id : 123456789-1234-5678-9000-12345678912 InUse : False Label : MigrationState : Name : Group your-service01 TestVNet01 State : Created Subnets : {FrontEnd, BackendEnd} OperationDescription : Get-AzureVNetSite OperationId : xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx OperationStatus : Succeeded
VM 作成
$_locationName = "Japan West" $_vmName = "vm01" # # Get-AzureVMImage を実行して Windows Server 2012 R2 datacenter の VM イメージの ImageName を取得 # $_imageName = @(Get-AzureVMImage | ? {$_.OS -eq "Windows" -and $_.ImageFamily -eq "Windows Server 2012 R2 datacenter"} ` | Sort-Object PublishedDate –Descending | Select-Object -First 1 ).ImageName $_adminUser = "oreadmin" $_adminPassword = "YourPassword!01" $_cloudService = "your-service01" # # Get-AzureVNetSite を実行して仮想ネットワーク名を取得 # $_vnetName = @(Get-AzureVNetSite -VNetName "Group your-service01 TestVNet01").Name $_subNet = "FrontEnd" # # New-AzureVMConfig ...インスタンスサイズ、イメージ名等を設定 # Add-AzureProvisioningConfig ... ログインユーザー名、パスワード等の OS より上のレイヤーを設定(-EnableWinRMHttp で HTTP 経由での WinRM の操作を有効にしている) # Set-AzureVMBGInfoExtension ... VM エージェントをインストールする # Set-AzureSubnet ... 仮想ネットワーク内に作成したサブネットを設定 # $_vmConfig = ` New-AzureVMConfig -Name $_vmName -InstanceSize Small -ImageName $_imageName ` | Add-AzureProvisioningConfig -Windows -AdminUsername $_adminUser -Password $_adminPassword -EnableWinRMHttp ` | Set-AzureVMBGInfoExtension ` | Set-AzureSubnet -SubnetNames $_subNet ` | New-AzureVM -ServiceName "your-service01" -VNetName $_vnetName -Location "Japan West" -WaitForBoot
VM にアクセスする為に必要な情報を確認する
Get-AzureEndpoint
を実行して Virtual IP とポート等を確認する
Get-AzureVM -ServiceName $_cloudService -Name $_vmName | Get-AzureEndpoint | Select Name,Port,Vip
- output
Name Port Vip ---- ---- --- PowerShell 63829 xxx.xxx.xxx.xxx RemoteDesktop 50698 xxx.xxx.xxx.xxx
幾つかの方法で VM にアクセスする
- PowerShell を使って VM にアクセスする
$_username = "oreadmin" $_passwd = "YourPassword!01" $_secure_string = ConvertTo-SecureString $_passwd -AsPlainText -Force $_pscredential = New-Object System.Management.Automation.PsCredential($_username, $_secure_string) $_cloudService = "your-service01" $_vmName = "vm01" $_uri = Get-AzureWinRMUri -ServiceName $_cloudService -Name $_vmName # # Enter-PSSession でインタラクティブに WinRM にアクセス # PS C:\Users\Administrator> Enter-PSSession -ConnectionUri $_uri -Credential $_pscredential -SessionOption (New-PSSessionOption -SkipCACheck) [your-service01.cloudapp.net]: PS C:\Users\oreadmin\Documents> $PSVersionTable Name Value ---- ----- PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.42000 BuildVersion 6.3.9600.17400 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2 [your-service01.cloudapp.net]: PS C:\Users\oreadmin\Documents>
こちらの記事を参考にさせて頂いた。有難うございました。
# # PowerShell を使って WinRM のエンドポイントを確認 # PS C:\Users\Administrator> Get-AzureWinRMUri -ServiceName $_cloudService -Name $_vmName | select AbsoluteUri AbsoluteUri ----------- https://your-service01.cloudapp.net:63829/
AbsoluteUri
を控えておいて...(事前に pip install pywinrm
しておく必要がある)
$ python Python 2.7.12 (default, Sep 3 2016, 08:17:12) [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> import winrm >>> s = winrm.Session('https://your-service01.cloudapp.net:63829/wsman', auth=('oreadmin', 'YourPassword!01'), server_cert_validation='ignore', transport='ntlm') >>> r = s.run_cmd('ipconfig', ['/all']) >>> r.status_code 0 >>> r = s.run_cmd('powershell -Command $PSVersionTable') >>> r.status_code 0
WinRM 経由で ifconfig /all
や powershell -Command $PSVersionTable
を実行している。
後片付け
- Remove-AzureVM で仮想マシンを削除
Remove-AzureVM -ServiceName your-service01 -Name vm01
- output
OperationDescription OperationId OperationStatus -------------------- ----------- --------------- Remove-AzureVM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
- リソースグループの削除
# # リソースグループ名を確認 # Get-AzureRmResourceGroup | select ResourceGroupName
- output
ResourceGroupName ----------------- Default-Storage-JapanWest your-service01 TestRG
- your-service01 グループを削除
# # your-service01 グループを削除 # Remove-AzureRmResourceGroup -Name your-service01
- output
確認 Are you sure you want to remove resource group 'your-service01' [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y (...暫く時間を置いて...) True
リソースグループの削除に合わせて仮想ネットワークも削除される。
以上
メモでした。