見出し画像

リソースグループを Bicepテンプレートでデプロイしてみよう

これまで ARMテンプレートでの記述の記事をいくつか掲載してきましたが、やはりこれからはBicepだよね、ということで今後は必要に応じてこれで記述した内容を掲載していきたいと思います。

あと、これまではリソースグループを作成して、そこに対してリソースをデプロイする内容しか紹介してきませんでしたが、いよいよもうちょっと踏み込んで実践的にしていきたいと思います。

今回のテーマは、『 Azureサブスクリプションのレベルでリソースをデプロイ 』です。
具体的には、リソースグループ自体をデプロイします。

といっても、今回の記事はそんなに難しくも複雑でもありません。
三分くらいで読めるサクッと記事なのでぜひ最後まで読んでもらえると嬉しいです。

そもそもBicepって?? 

Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語 (DSL) です。

 公式ドキュメント : Bicep とは

要はARMテンプレート(JSON)とは違った記述の仕方で、より快適にしたものです。

どう快適になるかも公式ドキュメントに色々書いてありますが、個人的に大きな特長だと思うのは

  • 全体の行数が減る

  • 依存関係の定義が基本不要

です。

ざっくりとは、テンプレート作った後のデプロイのエラーが減ると考えてもらって差し支えないです。

テンプレートを記述する

作成

main.bicepというファイルを作成し、以下の内容を記述しました。
単純な内容で、西日本リージョンにtest-rgというリソースグループを作成するというだけのものです。

targetScope = 'subscription' // 1️⃣

param resourceGroupName string = 'test-rg'

@allowed([  
  'japaneast'  
  'japanwest'  
])  
param resourceGroupLocation string = 'japanwest'  

resource newRG 'Microsoft.Resources/resourceGroups@2021-04-01' = { // 2️⃣
  name: resourceGroupName  
  location: resourceGroupLocation
}

補足

1️⃣ 今回は規定ではいけないので、サブスクリプションを設定

既定では、ターゲット スコープは resourceGroup に設定されます。 リソース グループ レベルでデプロイしている場合は、Bicep ファイルでターゲット スコープを設定する必要はありません。

公式ドキュメント : ターゲット スコープ

2️⃣ リソースオブジェクトとしてリソースグループを宣言

これまでの記事ではここをVMとかを宣言していたわけです。

Bicepの場合コメントが記述可能

単一行のコメントには // を、複数行のコメントには /* ... */ を使用します

公式ドキュメント : Bicep ファイルの構造と構文について > 説明

YAML 形式で記述できる AWS CloudFormation テンプレートと同じような感じにちょっとなりますね。

デプロイを行う

Azure CLI で実行

$ az deployment sub create --location japaneast  --template-file main.bicep

過去の記事で紹介してきたコマンドと当然ながら違いますね。
これまではまずリソースグループを作成していましたので。

補足

なぜ location(リージョン)を指定している?

前述のテンプレート内に記述(指定)したはずなのに、なぜ? と思う方もいるかもしれません。

サブスクリプション レベルのデプロイの場合、デプロイの場所を指定する必要があります。 デプロイの場所は、デプロイするリソースの場所とは異なります。 デプロイの場所では、デプロイ データを格納する場所を指定します。

公式ドキュメント : デプロイの場所と名前

ということなんです。
なので、テンプレートないでは 'japanwest' だったのに、ここではあえて『 --location japaneast 』としたわけです。
もちろん同じく 'japanwest' でも全然いいですよ~

完了(成功)

{\ Finished .. 👈

  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Resources/deployments/main",
  "location": "japaneast",
  "name": "main", 👈

・・・
中略
・・・
    "provisioningState": "Succeeded", 👈

    "templateHash": "10413805528488928133",
    "templateLink": null,
    "timestamp": "2022-04-23T03:00:43.991646+00:00",
    "validatedResources": null
  },
  "tags": null,
  "type": "Microsoft.Resources/deployments"
}

「 Finished 」 と表示され 『 provisioningState": "Succeeded" 』 ともなっていますね。
問題ありません。

ちなみに、今回のコマンドではデプロイ名を指定しなかったので既定の値である 『 テンプレートファイル名(拡張子なし)』 となりました。

(念のため)確認

$ az group list --output table | grep -e 'test' -e 'Name' -e '------'
Name                      Location    Status
------------------------  ----------  ---------
test-rg                   japanwest   Succeeded 👈

うん、狙った 「 test-rg 」 がステータス 『 Succeeded 』 となっていますね。

$ az deployment sub show --name main
{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Resources/deployments/main",
  "location": "japaneast",
  "name": "main",
・・・
中略
・・・
    "provisioningState": "Succeeded",
    "templateHash": "10413805528488928133",
    "templateLink": null,
    "timestamp": "2022-04-23T03:00:43.991646+00:00",
    "validatedResources": null
  },
  "tags": null,
  "type": "Microsoft.Resources/deployments"
}

デプロイコマンドが完了したときと同じ情報が見れるコマンドですが、こちらでも当然ながらちゃんとデプロイが成功していることを確認できました。

はい、ということで問題なく狙ったとおり作成されました。

ちなみに

内部的には Azure にデプロイするときに Bicepファイルは JSON (ARMテンプレート) にコンパイルされ、その JSON がデプロイのために Azure に送信されて実際のデプロイが実行されることになります。

🟠 さいごに 🔚

いかがだったでしょうか?
今回はリソースグループを作成するのみを紹介しましたが、ここにさらに VM などのリソースも併せてデプロイするようにまとめて記述できます。
これは便利ですよね、今後これも記事にしようと思います。

今後も Azure に関する技術情報やその他の資格試験に関する記事を書いていこうと思いますので、よろしければフォローをお願いします🔆

また、この記事が少しでもタメになった、面白かったという方がいらっしゃいましたら、ぜひ 「 スキ 」 ボタンのクリックをお願いします😋

最後までお読みいただきありがとうございました 😊

▶ 続けて読むのにおススメな記事


この記事が参加している募集

スキしてみて

つくってみた

もしこの記事が何かの参考になったもしくは面白かったという方は、応援していただけると大変嬉しいです😊 これからもよろしくお願いします。