はじめに
azure.azcollection.azure_rm_resourcegroup
モジュールは、Azureのリソースグループを作成したり削除したりできます。
削除したいときは、state: absent
を指定しればよいですが、リソースグループ内にリソースが含まれていると削除できません。
どうやろうかなと思っていたのですが、force_delete_nonempty: true
を併用すればいいようでした。
取り扱いにはとても注意が必要ですが、検証時などで作ったり削除したりするときは便利です。
かんたんなサンプルで紹介します。
- 動作検証環境
- ansible 5.1.0 (ansible-core 2.12.1)
- azure.azcollection collection 1.10.0
サンプルPlaybook
以下の通り、state: absent
と force_delete_nonempty: true
を併用します。
--- - hosts: localhost connection: local gather_facts: false tasks: - name: delete resource group (with included resources) azure.azcollection.azure_rm_resourcegroup: name: ansible_azure state: absent force_delete_nonempty: true
おためし
削除前
ansible_azure
というリソースグループを対象とします。削除前はいくつかのリソースが含まれている状態です。
$ az resource list -g ansible_azure -o yaml - changedTime: '2021-12-30T07:28:38.834843+00:00' # ...(略)... resourceGroup: ANSIBLE_AZURE # ...(略)... type: Microsoft.Compute/disks - changedTime: '2021-12-30T07:30:38.798837+00:00' #. ..(略)... resourceGroup: ansible_azure type: Microsoft.Compute/virtualMachines - changedTime: '2021-12-30T07:28:05.527039+00:00' # ...(略)... resourceGroup: ansible_azure type: Microsoft.Network/networkInterfaces - changedTime: '2021-12-30T07:29:51.633415+00:00' # ...(略)... resourceGroup: ansible_azure # ...(略)... type: Microsoft.Network/networkSecurityGroups - changedTime: '2021-12-30T07:30:01.912170+00:00' resourceGroup: ansible_azure # ...(略)... type: Microsoft.Network/publicIPAddresses - changedTime: '2021-12-30T07:29:45.735572+00:00' # ...(略)... resourceGroup: ansible_azure # ...(略)... type: Microsoft.Network/virtualNetworks
削除実行
先程のPlaybookを実行します。
$ ansible-playbook -i localhost, delrg.yml PLAY [localhost] *********************************************************************************** TASK [delete resource group (with included resources)] ********************************************* changed: [localhost] PLAY RECAP ***************************************************************************************** localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
数分かかりました。
削除後
リソースグループごと削除されました。
$ az resource list -g ansible_azure -o yaml (ResourceGroupNotFound) Resource group 'ansible_azure' could not be found. Code: ResourceGroupNotFound Message: Resource group 'ansible_azure' could not be found.