Azure上に作成した仮想マシンを作業時だけサイズ変更して快適に利用する(その他仮想マシン作成後のメモ)

Azure上の仮想マシン、最低サイズのBasic_A0だと料金は約1000円/月なのですが、これだとまともに操作できないレベルに遅い。快適に操作するならBasic_A3くらいだが、約5000円/月くらいとなり辛い。

作業時以外はマシンをシャットダウンして課金を抑えるのもいいが、ADのような常時起動前提のサーバーの場合、長期間シャットダウンするとトラブルの元となるため、作業時のみサイズ変更をして終わったら元に戻すスクリプトを作成する。

powershellでログイン

スクリプトのみで自動ログインをする場合、こちらとなる。

$secpasswd = ConvertTo-SecureString "[パスワード]" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("[ID]", $secpasswd)
Login-AzureRmAccount -Tenant "[テナントID]" -Credential $mycreds -ServicePrincipal

ただし上記は組織アカウント(xxx@テナント名.onmicrosoft.comのようなアカウント)を使った場合で、マイクロソフトアカウント(xxx@gmail.comとかxxx@yahoo.comとか、MS以外のアカウント)の場合、上記手順は使用できず、単純にLogin-AzureRmAccountで対話的にログインする必要がある。

ではマイクロソフトアカウントでAzureを契約(会社で契約しない限りそれが普通)した場合はどうなるか?以下のブログにある通り、最初にテナントを作成したのがマイクロソフトアカウントの場合、サブスクリプションもそれに紐づいているので、組織アカウントを共同管理者として設定する必要がある。

Azure PowershellMicrosoftアカウントを利用してのAdd-AzureAccountについて
https://social.msdn.microsoft.com/Forums/ja-JP/fd253f40-539a-46c0-8fd2-0500f8712918/azure-powershellmicrosoftaddazureaccount?forum=windowsazureja

サイズ変更

仮想マシンのディスク サイズを Azure PowerShell から拡張する方法 – Japan Azure Technical Support Engineers’ Blog
https://blogs.technet.microsoft.com/jpaztech/2016/04/18/azure-vm-disk-resize/

Azure 仮想マシンPowerShellからスケールアップする – 浅草橋青空市場
http://asazure.hatenablog.jp/entry/2015/08/24/173456

を参照に

スケールアップ

$vmconfig = get-azurermvm -name [マシン名] -ResourceGroupName [RG名]
$vmconfig.HardwareProfile.VmSize = "Standard_A3"
$res = Update-AzureRmVM -ResourceGroupName [RG名] -VM $vmconfig
if($res.StatusCode -ne "OK") {"StatusCodeがOKではありません"}

スケールダウン

$vmconfig = get-azurermvm -name [マシン名] -ResourceGroupName [RG名]
$vmconfig.HardwareProfile.VmSize = "Basic_A0"
$res = Update-AzureRmVM -ResourceGroupName [RG名] -VM $vmconfig
if($res.StatusCode -ne "OK") {"StatusCodeがOKではありません"}

サイズ変更~マシン再起動までを実施するのでコマンド終了まで数分かかる。

余談:OS停止/起動

Azure PowerShell にて新ポータル (ARM) の VM を自動的に停止・開始・再起動する – Japan Azure Technical Support Engineers’ Blog
https://blogs.technet.microsoft.com/jpaztech/2016/02/23/vmstop-start-restart/

Stop-AzureRmVM -ResourceGroupName [RG名] -Name [マシン名] -Force
Start-AzureRmVM -ResourceGroupName [RG名] -Name [マシン名]
Restart-AzureRmVM -ResourceGroupName [RG名] -Name [マシン名]

メンバーサーバーなど使用しないとき以外はシャットダウンするマシンはこちらを使う

余談:OSデプロイ後の日本語化

OSデプロイ後は言語もタイムゾーンも全て英語で、細かい設定をいろいろ実施しなければいけないのですが…全てスクリプトで完結されている神がいました。ありがとうございます。

Azure IaaS 上に作成した Windows Server 2016 仮想マシンの UI を日本語化する | 焦げlog
http://kogelog.com/2016/10/18/20161018-01/

Azure VM の日本語 UI を PowerShell で設定 at SE の雑記
http://blog.engineer-memo.com/2013/11/24/azure-vm-%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E-ui-%E3%82%92-powershell-%E3%81%A7%E8%A8%AD%E5%AE%9A/

余談:ADへの昇格

Windows Server 2016 で AD DS (Active Directory Domain Services) のセットアップ | blog.yottun8.com

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

AD DS のドメイン コントローラーへの昇格 | blog.yottun8.com

$password = ConvertTo-SecureString -String "[パスワード]" -AsPlainText -Force
Install-ADDSForest -DomainName "almea.jp" `
-DomainNetbiosName "ALMEA" `
-ForestMode "WinThreshold" `
-DomainMode "WinThreshold" `
-SafeModeAdministratorPassword $password `
-DatabasePath "C:\Windows\NTDS" `
-LogPath "C:\Windows\NTDS" `
-SysvolPath "C:\Windows\SYSVOL" `
-CreateDnsDelegation:$false `
-InstallDns:$true `
-NoRebootOnCompletion:$false `
-Force:$true

余談:AADCのインストー

Azure AD Connect: カスタム インストール | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/active-directory/connect/active-directory-aadconnect-get-started-custom