リリース前にリソースはLockしようぜ。間違って削除したらおバカです。

はじめに

くどうです。

例えば、Azureで仮想マシンを使ってサービスをリリースするぜ!ってとき、リソースはちゃんとLockしてますか?
AWSでは、Termination Protectionを当たり前のように使います。意図しない削除を防止するためです。さすがに、意図して削除するのは悪意を持っているので・・・
lo02
上記ではEnable、つまり有効になった状態です。ボタン一つで変更が行えます。

では、Azureではどうでしょう。
できます。PowerShellやREST APIを使って・・・めんどうですな。しかもARMだけ。
でも、Azureが良いところはほぼすべてのリソースにLockをかけれます。
実際に、仮想マシンにLockをかけていきたいと思います。

参考は下記。
https://azure.microsoft.com/ja-jp/documentation/articles/resource-group-lock-resources/

Lockだぜ

操作はPowershellから行います。
対象サブスクリプションにてログインしている状態です。

最初に対象のリソースを確認します。

次に、Lockを行います。
必要な情報は
ResourceName : ansible
ResourceType : Microsoft.Compute/virtualMachines
ResourceGroupName : devrg

現状対応しているのは「削除不可」CanNotDelete のみ

この状態で、実際に削除を行います(俺のAnsibleちゃんが消えませんように)。

lo01

ポータルから管理者権限もったユーザーで削除を行ったところ、消えませんでした。
サイズの変更も含め、その他の作業は行えます。

設定を削除する場合は Remove-AzureRmResourceLock を利用します。

その他に
・Set-AzureRmResourceLock
 New-AzureRmResourceLockと挙動は一緒です。

・Get-AzureRmResourceLock
 Lockされえている場合は値を返します。

AzureRmResourceLockに関するコマンドレッドは4つです。

おわりに

リリース時のLockは非常に重要です。むしろやってください。削除されて泣くのはあなたです。
現状、ポータルからの変更や確認ができません。早くできるようになってほしいですね。

ではでは