🦾

ARMテンプレートのデプロイ

2024/03/31に公開

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アドレス名>
GitHubで編集を提案

Discussion