Azure Bicep 事始め

この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。

はじめに

この記事では、以下を目的としています。
・Azure Bicep とはなにか知ること
・Bicep の作り方や Azure へのデプロイ方法を知り、Bicep でリソース管理できそうな気が起こること

Bicep の前に、Azure Resource Manager (ARM) について整理します。
ARM は Azure のデプロイおよび管理サービスであり、リソース作成時においてポータルでも PowerShell でも Azure CLI でも同様のリソース作成結果が得られます。また、デプロイ方法の一つである ARM テンプレートは宣言的で一貫性はありましたが、その作成は JSON ファイルを組み大量の括弧 {} や大量の行をみる必要があり職人技でした。

Bicep はこの ARM テンプレートを作成したり、ARM テンプレートから Bicep ファイルにデコンパイルしたり、直接 Bicep ファイルを指定してデプロイできるソリューションです。

・参考URL
Azure Resource Manager の概要 – Azure Resource Manager | Microsoft Docs

Bicep とは

Bicep とは、ARM テンプレートのためのドメイン固有言語 (DSL:HTMLでスタイルを記述するCSSなど(=CSSはHTMLのDSL)) です。Azure リソースを宣言的にデプロイするためのプログラミングライクな言語で、 クリーンな構文、タイプセーフの向上 (ARMにはない型がある)、モジュール性とコードの再利用のサポートがあり、ARM テンプレートで実現できるものと同等の機能を備えています。

また、Bicep は 「.bicep」拡張子のファイルに Bicep コードを記述し、 ARM テンプレート JSON ファイルに変換することができます。

Bicep が目指すゴールは、インフラを記述、検証、および Azure にデプロイするための最適な言語を構築することで、ノンゴール/できないこととしては、汎用言語の構築や Azure API にはない Kubernetes のデプロイやデータベース内のユーザーの作成などがあります。詳しくは公式ドキュメントをご参照ください。

バージョンや注意点

現在のバージョンは 0.4.613 で、バージョン 0.3 以降 Microsoft サポートプランでサポートされています。将来的に破壊的変更が発生する可能性があります。

・以下 URL より抜粋
GitHub – Azure/bicep: Bicep is a declarative language for describing and deploying Azure resources
Learn everything about the next generation of ARM Templates | OD340 – YouTube

インストール

Bicep を使用するには、 Azure CLI と Visual Studio Code 拡張機能をインストールする必要があります。
インストール方法は、下部の GitHub をご参照ください。

1.Azure CLI (Bicep CLI) のインストール
必須。以下コマンドでインストール/アップグレードします。
・az bicep install、az bicep upgrade
 適宜アップデートします。
・az bicep build –file .\main.bicep
 ビルドコマンド。Bicep ファイルから ARM JSON ファイルへ変換します。

2.Visual Studio Code Bicep拡張機能
オプションですが、以下より実質必須と考えられます。
・スニペットがあり、プロパティ候補を出してくれたり、必須プロパティを補完してくれたりします。
・リンターにより、より良い記述方法や、秘匿情報をハードコーディングしていないか、定義されているのに使われていないパラメータ―がないかなどをチェックしてくれます。

・参考URL
GitHub – Azure/bicep: Bicep is a declarative language for describing and deploying Azure resources

使用してみる

VS Code を開き、.bicep ファイルを作成します。bicep ファイルで Bicep 拡張機能が動作します。
「res」と入力すると様々な bicep テンプレートが表示され、「ressto」だとストレージアカウントのスニペットが表示されます。

ストレージアカウントの場合、name、location、kind、sku を入力すれば完成です。
記述量が少なく、output (ARM の出力) などの記述も reference[…] を入力することなく . (ドット) でプロパティを選択・表示できます。

resource はリソース宣言、stg は変数名、’Microsoft.Storage/~’ は作成するリソース及び API バージョンです。

作成したら、以下コマンドで bicep ファイルを ARM テンプレートに変換できます。

az bicep build –file .\0-temp.bicep


デプロイは以下のコマンドで行います。非常にかんたんにデプロイできます。

# login
az login

# set subscription
az account set –subscription <subscription-id>

# rg create
az group create –location japaneast –resource-group mybicep01

# bicep deploy
az deployment group create –resource-group mybicep01 –template-file stac.bicep


仮想マシンの Bicep サンプルを記載します。
ここでのポイントは、NIC の id や監視用ストレージアカウントの指定が暗黙的な (鉤括弧内になくとも) 指定が可能になっています。なお、仮想マシンのスニペットでは NIC やパブリック IP、仮想ネットワークはありませんので、リソースの関係性は理解しておく必要があります。


また、bicep の構成要素をみてみます。

赤枠で括っている部分を説明します。
・param:入力パラメータ
・@secure:セキュアパラメータ=入力しても非表示になります。
・@allowed:許可値
・var:変数
・output:出力
・concat:関数。Bicep 関数 – Azure Resource Manager | Microsoft Docs
・resourceGroup:暗黙的なリソースグループの参照


もちろん、ストレージアカウントに関連するリソースとして Blob コンテナーやファイル共有など、関連するリソースも定義しデプロイできます。


その他、VS Code では Bicep ファイルを視覚化できます。どのような構成かひと目で確認できます。


まとめ・所感

Bicep での記述は ARM より遥かに楽であり、Bicep でリソース管理 (IaC) することが現実的と感じました。
また、破壊的変更はありうるとのことですが Bicep から ARM に変換できる (=作成した資産が無駄にならない) ことや MS サポートも対応していることもあり GA に向け使っていきたいサービスです。
次回はより実践的な方法を記述します。

いいね (この記事が参考になった人の数:4)
(↑参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルクロステクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください