🦾
ARMテンプレートのデプロイ
ARMテンプレートのデプロイ
az deployment group
コマンドにより、リソースグループレベルで ARM テンプレートをデプロイする。
- 必要なパラメータは --parametersで指定する。パラメータファイルを利用することもできる。パラメータの指定がない場合、標準入力で指定する。
- Increment モードがデフォルト。ARMテンプレートに記載されていないリソースはいじらない。Complete モードを指定すると、
az deployment group create
実行時に、 ARMテンプレートに記載されていないリソースは削除される。以下では Incrementモードのお話し。 - デプロイを削除してもリソースは削除されない。terraform destroyのようには振舞わない。
- デプロイが一部失敗すると、成功された分のリソースのみ作られる。再デプロイすると、新たにリソースが追加される
なお、az コマンドは azure-cli
に含まれており、自分は amazonlinux2 の環境に pip3 install azure-cli
でインストールしている。
ARMテンプレートの例
テンプレートの例
- defaultValue の指定があれば、パラメータ指定を省略できる。
- 依存関係を指定する必要がある。よきにはからってくれない。
パラメータファイルの例
事前確認
テンプレートの検証
az deployment group validate --resource-group <リソースグループ名> --template-file <テンプレートファイル名> --parameters @<パラメータファイル名>
事前確認
実際にどのリソースが構築(削除)されるか事前確認する。terraform plan みたいな感じ。
az deployment group what-if --resource-group <リソースグループ名> --template-file <テンプレートファイル名> --parameters @<パラメータファイル名>
デプロイと確認
テンプレートのデプロイ
リソースを構築する
az deployment group create --name <デプロイ名> --resource-group <リソースグループ名> --template-file <テンプレートファイル名> --parameters @<パラメータファイル名>
テンプレートデプロイの確認
az deployment group show --name <デプロイ名> --resource-group <リソースグループ名>
リソースIDの確認
$ az deployment group show --resource-group "<リソースグループ名>" --name '<デプロイ名>' --query "properties.outputResources[].id"
後片付け
リソース削除
$ resources=$(az deployment group show --resource-group "<リソースグループ名>" --name '<デプロイ名>' --query "properties.outputResources[].id" --output tsv)
$ az resource delete --ids $resources
デプロイの削除
$ az deployment group delete --name <デプロイ名> --resource-group <リソースグループ名>
存在しているリソースの確認
$ az vm list --query "[].id"
$ az network public-ip list --query "[].id"
$ az network nic list --query "[].id"
不要なリソースの削除
$ az network nic delete -g <リソースグループ名> -n <NIC名>
$ az network public-ip delete --ids /subscriptions/<サブスクリプションID>/resourceGroups/<リソースグループ名>/providers/Microsoft.Network/publicIPAddresses/<パブリックIPアドレス名>
Discussion