【Bicep入門 #13】prefixを使った時短テク
この記事の内容
- Bicepでリソース名にprefixを変数化し、一括変更する方法を紹介します
- prefixを変えるだけで、別環境・別プロジェクト向けのリソースを並列作成できます
- サブスクリプションレベルでのデプロイを行い、リソースグループを含めて展開する手順を解説します
- GitHubを使ったCI/CDパイプラインでBicepテンプレートをデプロイする流れを確認します
- 実際にVMを展開し、パブリックIPアドレス経由で接続できるところまで確認します
prefixとは何か
BicepでAzureリソースをデプロイする際、リソース名を個別に管理していると、環境を複数作りたいときに手間がかかります。そこで活用できるのが「prefix(プレフィックス)」です。
prefixとは、リソース名の先頭に付ける共通文字列を変数として定義する手法です。たとえば prefix という変数を1か所に定義しておき、リソースグループ名・VNet名・VM名など、すべてのリソース名にこの変数を組み合わせます。
var prefix = 'ebi'
var resourceGroupName = '${prefix}-rg'
var vmName = '${prefix}-vm'
var vnetName = '${prefix}-vnet'
このようにしておくと、prefix の値を変えるだけで、すべてのリソース名が一括で変わります。
prefixを使う利点
prefixを1か所で管理することで、以下のような操作が簡単になります。
- 別プロジェクト・別環境を隣に作れる:prefixを変えてデプロイするだけで、既存リソースとは名前が衝突しない新しいセットを作れます
- 削除・再作成がやりやすい:リソースグループごと削除して作り直す場合も、prefixを変えれば削除を待たずに別名で新規作成できます
- コード変更箇所が最小限:名前のルールを一元管理しているため、変更のミスが減ります
実際のデプロイ手順
1. prefixを変数として定義する
Bicepファイルの冒頭でprefixを変数として定義します。
var prefix = 'ebi'
この変数を、リソースグループ名・VNet・パブリックIP・ストレージアカウント・ネットワークインターフェース・VMなど、すべてのリソース名に組み込みます。
2. サブスクリプションレベルでデプロイする
リソースグループ自体をBicepで作成する場合は、デプロイのスコープをサブスクリプションレベルに設定します。
targetScope = 'subscription'
これにより、リソースグループの作成からVMのデプロイまでを一連のテンプレートで完結させられます。
3. GitHubを使ったCI/CDパイプラインでコミット・デプロイ
コードをGitHubにコミットすると、CI/CDパイプラインが自動でBicepテンプレートをデプロイします。デプロイが走り出すと、Azureポータル上でサブスクリプションレベルの展開ログが確認できます。
デプロイされるリソースの確認
デプロイが進むと、以下のリソースが順次作成されます。
- リソースグループ
- パブリックIPアドレス
- 仮想ネットワーク(VNet)
- ストレージアカウント
- ネットワークインターフェースカード(NIC)
- 仮想マシン(VM)
NICの設定を確認すると、パブリックIPが紐づいていることも確認できます。
VMへの接続確認
デプロイ完了後、パブリックIPアドレスを使ってVMへの接続を試みます。VMの準備が整うまで少し時間がかかりますが、接続が確立されるとVMへのログインが成功します。
※ライブ配信中にパブリックIPを共有する場面があった場合、視聴者が接続を試みることがあります。本番環境でのデモ時はご注意ください。
まとめ
- Bicepでは
prefixを変数として定義し、すべてのリソース名に組み込むことで、名前管理を一元化できます - prefixを変えるだけで既存環境と並行して新しいリソースセットを作成でき、開発・検証がしやすくなります
- サブスクリプションレベルのデプロイを使うことで、リソースグループの作成からVMのデプロイまでをBicep1本でまかなえます
- GitHubと組み合わせたCI/CDパイプラインにより、コミットを起点に自動デプロイが実現できます
- 今回の手順でVMの展開・接続確認まで、Bicepによるインフラ自動化の一連の流れを実践できました