💪

Azure Bicep実行環境の導入(M1 Mac編)

2022/07/09に公開

はじめに

パブリッククラウドのインフラを管理する上で、IaCは必須となってきています。
Azureでもいくつか手段がありますが、今回は「Azure Bicep」を使った管理をするための"下準備"について説明したいと思います。

なお、筆者の環境は下記の通り。この手の導入記事はたくさんありますが、ちょっとずつ環境が違うとハマるところも変わりますので、こんなんなんぼあってもいいですからね。

HW: Mac mini (M1,2020)
OS: macOS Monterey 12.4

M1 Macであることがポイントになるかとは思いましたが、特に苦労なく導入可能です。

Azure Bicepとは

そもそもAzure Bicepってなんだっけ?というと、公式ドキュメントによれば下記の通りです。
https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/overview?tabs=bicep

・・・IaCを実現する言語、ということしかわかりません。

Azureをかじったことがある方は「ARM Templateと何が違うんだろう?」と感じると思いますが、誤解を恐れずに言えば、BicepはARM Templateの後継にあたります。ARM Templateにおける、読み取りづらい、繰り返しの記述がしづらい、・・・といったいくつかの批判を吸収して、「より簡潔に記述できるようにバージョンアップされたもの」と受け取ればよいでしょう。

なお、ARM(腕)が鍛えられてbicep(上腕二頭筋)になった、とか・・・(?)。真偽は不明です。

AWSを触ったことがある方は、「Cloud Formationに対するCDKの立ち位置」と言うと想像がつきやすいかと思います。

この記事の本筋ではないので、詳細は別のところへ・・・。

導入手順

関連するツールも併せてインストールしていきます。

Visual Studio Code

まず、VSCodeをインストールします。VSCodeはMS純正のフリーのエディタですが、bicep用のExtentionもあり、導入をお勧めします。

インストーラ

https://azure.microsoft.com/ja-jp/products/visual-studio-code/
"今すぐダウンロード"から対応するOS向けのバージョンをダウンロードし、インストールします。もちろん、アップルシリコンに対応しています。

インストール

zipファイルの中にアプリケーションファイルが格納されていますので、展開してアプリケーションフォルダに置くのが良いでしょう。

Azure CLI

bicepを利用する前提として、Azure CLIを導入します。もちろんbicep自体はPowershell(azモジュール)でも利用可能ですが、今回はなんと言ってもmacを前提としていますからね。macへのpowershellの導入はまた別の話になってきますので、Azure CLIで進めていきます。

インストール

ターミナルを使って、一行、コマンドを実行するのみです。
brew update && brew install azure-cli

"homebrew"が導入されていないなど、うまくいかない場合は公式ドキュメントをご確認の上対処しましょう。
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-macos

これでAzure CLIが利用できるようになります。

念のため稼働確認を行います。
az login
というコマンドを叩くと、ブラウザが立ち上がってAzure ADのログイン画面が開きます。
認証が終わってブラウザを閉じると、ターミナル上ではログインした環境の「テナントID」、「サブスクリプション名」や「ユーザー名」などが表示されます。

もしそのように動かなかった場合は、Azure CLIのインストールに失敗しているか、インターネットへの接続経路がうまくいってない場合が多いでしょう。Proxy背後でAzure CLIを動かす方法などは色んなブログ等で解説されていますので、ここでは割愛させていただきます。

Azure Bicep

最後に、Azure Bicepのインストールを行います。
こちらは、Azure CLIの拡張機能となっており、Azure CLI本体にはモジュールが含まれていませんので、追加作業が必要です。

インストール

とはいえこちらもコマンドひとつだけです、
az bicep install
Azure CLIのコマンド("az"コマンド)を使ってインストールします。

ちゃんとインストールに成功していると、下記コマンドでバージョンが表示されます
az bicep version

以下のような結果が返ってきます

Bicep CLI version 0.X.XX (XXXXXXXXXXX)

Bicep拡張機能

VSCodeでBicepを利用する上で、便利な拡張機能が存在します。
特に、"bicep"定義ファイルを記述中に自動保管が効くようになり、とても便利ですのでぜひインストールしておきましょう。

インストール

VSCodeの拡張機能タブから検索しても良いのですが、URLは下記の通りです。
https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-bicep

動作確認

準備が整ったところで、動作確認を行います。

bicep定義ファイルの準備

クイックスタートページを見ながら、簡単な定義ファイルを作成します。
https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/quickstart-create-bicep-use-visual-studio-code?tabs=CLI

今回は完成品を置いておきます。以下のようにしてみました。

main_rg.bicep
@minLength(3)
@maxLength(24)
@description('Provide a name for the storage account. Use only lower case letters and numbers. The name must be unique across Azure.')
param storageName string

resource logStorageAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  name: storageName
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

ActivityLogでも保管しようかな?というストレージアカウントを作成してみます。

下準備

先ほどaz loginでログイン実施済みですので、次はリソースグループを作成しておきます。
※bicepでリソースグループを管理することも可能ですが、今回は事前に作っておきました。

az group create --name logRG --location japaneast

「ログ用のストレージアカウントを置くリソースグループ」ということで、「logRG」です、安易ですねー。

実行

bicepファイルを指定し、必要なパラメータを与えます。

az deployment group create --resource-group logRG --template-file main_rg.bicep --parameters storageName=20220707XXXXXX

ストレージアカウント名は世界で一意となってる必要があり、かつ字数も少なめです。エラーにならないように、テストで作るときは日付を入れるのがオススメですね。

問題なく作成されると、デプロイイベントのjsonが返されます。resourceIDや作成時のtimestampなどを知ることができます。
念のため最後にAzureポータルから、指定したストレージアカウントが作成できていることを確認しておきましょう。

おわりに

今回は、bicep環境の導入手順を紹介しました。
同じような環境の方で、導入手順に迷われた方の助けになれば幸いです。

一方で、動作確認として試した使い方は極々一部だけなので、これだけではARM Templateに比べてどれくらい嬉しいかよくわからないですよね。もう少し大きい規模を管理していくような話も今後紹介できればと思ってます。

Discussion