はじめに
くどうです。
例えば、Azureで仮想マシンを使ってサービスをリリースするぜ!ってとき、リソースはちゃんとLockしてますか?
AWSでは、Termination Protectionを当たり前のように使います。意図しない削除を防止するためです。さすがに、意図して削除するのは悪意を持っているので・・・
上記ではEnable、つまり有効になった状態です。ボタン一つで変更が行えます。
では、Azureではどうでしょう。
できます。PowerShellやREST APIを使って・・・めんどうですな。しかもARMだけ。
でも、Azureが良いところはほぼすべてのリソースにLockをかけれます。
実際に、仮想マシンにLockをかけていきたいと思います。
参考は下記。
https://azure.microsoft.com/ja-jp/documentation/articles/resource-group-lock-resources/
Lockだぜ
操作はPowershellから行います。
対象サブスクリプションにてログインしている状態です。
最初に対象のリソースを確認します。
PS C:\Users\jkudo> Get-AzureRmResource ~~~~~~ Tags : {} Name : ansible ResourceId : /subscriptions/6c19861f-xxxx-xxxx-xxxx-5fe8b793xxxx/resourceGroups/devrg/providers/Microsoft.Compute/virtualMachines/ansible ResourceName : ansible ResourceType : Microsoft.Compute/virtualMachines ResourceGroupName : devrg Location : japaneast SubscriptionId : 6c19861f-xxxx-xxxx-xxxx-5fe8b793xxxx ~~~~~~
次に、Lockを行います。
必要な情報は
ResourceName : ansible
ResourceType : Microsoft.Compute/virtualMachines
ResourceGroupName : devrg
現状対応しているのは「削除不可」CanNotDelete のみ
New-AzureRmResourceLock -LockLevel CanNotDelete -LockName vmlock -ResourceName ansible -ResourceType Microsoft.Compute/virtualMachines -ResourceGroupName devrg
PS C:\Users\jkudo> New-AzureRmResourceLock -LockLevel CanNotDelete -LockName vmlock -ResourceName ansible -ResourceType Microsoft.Compute/virtualMachines -ResourceGroupName devrg 確認 Are you sure you want to create the following lock: /subscriptions/6c19861f-27c2-4010-b371-5fe8b793145b/resourceGroups/devrg/providers/Microsoft.Compute/virtualMachines/ansible/providers/Microsoft.Authorization/locks/vmlock [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y Name : vmlock ResourceId : /subscriptions/6c19861f-xxxx-xxxx-xxxx-5fe8b793xxxx/resourceGroups/devrg/providers/Microsoft.Compute/virtualMachines/ansible/providers/Microsoft.Authorization/locks/vmlock ResourceName : ansible ResourceType : Microsoft.Compute/virtualMachines ExtensionResourceName : vmlock ExtensionResourceType : Microsoft.Authorization/locks ResourceGroupName : devrg SubscriptionId : 6c19861f-xxxx-xxxx-xxxx-5fe8b793xxxx Properties : @{Level=CanNotDelete} LockId : /subscriptions/6c19861f-xxxx-xxxx-xxxx-5fe8b793xxxx/resourceGroups/devrg/providers/Microsoft.Compute/virtualMachines/ansible/providers/Microsoft.Authorization/locks/vmlock
この状態で、実際に削除を行います(俺のAnsibleちゃんが消えませんように)。
ポータルから管理者権限もったユーザーで削除を行ったところ、消えませんでした。
サイズの変更も含め、その他の作業は行えます。
設定を削除する場合は Remove-AzureRmResourceLock を利用します。
PS C:\Users\jkudo> Remove-AzureRmResourceLock -LockName vmlock -ResourceName ansible -ResourceType Microsoft.Compute/virtualMachines -ResourceGroupName devrg 確認 Are you sure you want to delete the following lock: /subscriptions/6c19861f-xxxx-xxxx-xxxx-5fe8b793xxxx/resourceGroups/devrg/providers/Microsoft.Compute/virtualMachines/ansible/providers/Microsoft.Authorization/locks/vmlock [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): True
その他に
・Set-AzureRmResourceLock
New-AzureRmResourceLockと挙動は一緒です。
・Get-AzureRmResourceLock
Lockされえている場合は値を返します。
AzureRmResourceLockに関するコマンドレッドは4つです。
おわりに
リリース時のLockは非常に重要です。むしろやってください。削除されて泣くのはあなたです。
現状、ポータルからの変更や確認ができません。早くできるようになってほしいですね。
ではでは