背景
- 仕事で使っているVMで、平日朝8時に自動起動するようにしている
- 普段通りRDP接続を試みるも接続できない
- セッションを張ろうとしてタイムアウトする
- PortalからVMの状態を確認 -> Status: Failed
- どうやらEncrypted Data Diskのマウントに失敗している模様
- 前の週の金曜日まではマウントできていた
- Ignite 開催中
MSさん、なんかUpdateしましたね?
環境
- Target
- Azure VM
- Windows Server 2016 (1607)
- Managed Disk (OS/Data)
- Azure Disk Encryption: Enable (OS/Data)
- Azure VM
- Client
- Windows 10 Enterprise (1703)
- Azure PowerShell (5.6.0)
- Windows 10 Enterprise (1703)
トラブルシューティング開始
ひとまずData DiskをDetach
- Portalにてポチポチ
- もしくはPowerShell
$vm = Get-AzureRmVM -ResourceGroupName hogeRG -Name win01
$vm = Remove-AzureRmVMDataDisk -VM $vm -DataDiskNames win01-data
Update-AzureRmVM -ResourceGroupName hogeRG -VM $vm
VMが起動できることを確認
- Portalにてポチポチ
- もしくはPowerShell
Start-AzureRmVM -ResourceGroupName hogeRG -Name win01
# $vm | Start-AzureRmVM
# でもできると思う (Portalを開いていたのでPortalから起動した)
無事に起動。
なにも考えずにAttachしてみる
- Portalにてポチポチ
- もしくはPowerShell
$disk = Get-AzureRmDisk -ResourceGroupName hogeRG -DiskName win01-data
$vm = Get-AzureRmVM -ResourceGroupName hogeRG -Name win01
$vm = Add-AzureRmVMDataDisk -VM $vm -Caching None -Lun 0 -CreateOption Attach -ManagedDiskId $disk.Id
Update-AzureRmVM -ResourceGroupName hogeRG -VM $vm
エラーが返ってくる。
Disk '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/hogeRG/providers/Microsoft.Compute/disks/win01-data' contains encryption settings and cannot be used as a data disk. In order to use it as a data disk, remove the encryption settings and ensure that the virtual machine’s OS disk has the applicable encryption settings defined.
Data DiskをAttachできる状態にしてAttachする
正直わけわからん状態だったがPortalをよく見てみると、暗号化が無効のディスクとしてAttachしようとしている様子。
ワークアラウンドとしては以下が思いつく。
- 暗号化が有効になっているディスクとしてAttachする
- Diskの暗号化を解除してAttachする
1. 暗号化が有効になっているディスクとしてAttachしてみる
MSさん謹製のドキュメントにこんなものがあったので、Data Diskでもできるんじゃね?ってことでやってみた。
Azure Disk Encryption に関する付録 - OS ディスクをアタッチするときにシークレット URL を指定する
ここで上げているCmdletがSet-AzureRmVMOSDisk
なのでSet-AzureRmVMDataDisk
に置き換えてみる。
PS > Set-AzureRmVMDataDisk -VM
VM DiskSizeInGB Verbose InformationAction OutVariable
Name StorageAccountType Debug ErrorVariable OutBuffer
Lun WriteAccelerator ErrorAction WarningVariable PipelineVariable
Caching DefaultProfile WarningAction InformationVariable
Set-AzureRmVMOSDisk
にあったDiskEncryptionKeyVaultId
オプションやDiskEncryptionKeyUrl
オプションがない。
つまりこのCmdletではできない。
Add-AzureRmVMDataDisk
を見てもそれらしいオプションは存在しない。
よってこの方法ではAttachできない。
2. Diskの暗号化を解除してAttachする
Diskの暗号化をしたときはVMにAttachした状態でやったので、Disk単体で解除なんてできるのか?と不安だったができた。
PortalではできないのでPowerShellにて。
使うCmdletは以下。
Exampleでは、EncryptionSettingsEnabled
オプションを有効にしているが、ここでは無効にする。
$diskupdateconfig = New-AzureRmDiskUpdateConfig -EncryptionSettingsEnabled $false
Update-AzureRmDisk -ResourceGroupName hogeRG -DiskName win01-data -DiskUpdate $diskupdateconfig
無効になっていることを確認する。
(Get-AzureRmDisk -ResourceGroupName hogeRG -DiskName win01-data).EncryptionSettings
Enabled DiskEncryptionKey KeyEncryptionKey
------- ----------------- ----------------
False
やったぜ。
早速Attachしてみる。
$vm = Get-AzureRmVM -ResourceGroupName hogeRG -Name win01
$vm = Add-AzureRmVMDataDisk -VM $vm -Caching None -Lun 0 -CreateOption Attach -ManagedDiskId $disk.Id
Update-AzureRmVM -ResourceGroupName hogeRG -VM $vm
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
True OK OK
ぱんぱかぱーん!
OSからも認識していることを確認!
まとめ
AzureはやっぱりPowerShellに限る。
あとMSさん、"さいれんとあっぷでーと"は勘弁して...。
また同じことが起こったら面倒だから、暗号化解除しておこうかしら...。
Security Centerで怒られるけど...。