【Bicep入門 #10】ここまでのおさらい — モジュール構成とGitHub Actionsデプロイの復習
この記事の内容
- ローカル環境でリポジトリをクローンし、VS Codeで作業する手順の確認
main.bicepのスコープとリソースグループ作成の構成をおさらい- VM作成モジュール(
vm.bicep)が作るリソースの全体像を整理 - GitHub Actionsを使ったサブスクリプションレベルのデプロイ方法の振り返り
- Azure ポータルでデプロイ結果を確認する流れ
はじめに
Bicep入門シリーズの第10回です。前回までにひと通りの構成を作り上げたところで、今回は「ここまで何をやってきたか」を改めて振り返ります。環境はローカルPCにリポジトリをクローンし、Visual Studio Codeで開いた状態から確認していきます。
ローカル環境の準備
まずリポジトリをクローンします。
git clone <リポジトリURL>
クローンしたフォルダをVisual Studio Codeで開き、作業を進めます。前回まではクラウドシェル(Azure Cloud Shell)上で環境を整えていましたが、今回からはローカルPCで作業します。
main.bicep の構成
main.bicep のポイントをおさらいします。
targetScope = 'subscription'
ターゲットスコープは サブスクリプション に設定しています。サブスクリプションレベルで動かすことで、まずリソースグループそのものを Bicep から作成できます。
resource rg 'Microsoft.Resources/resourceGroups@2022-09-01' = {
name: 'youtube-vm'
location: 'japaneast'
}
リソースグループ名は youtube-vm として定義しています。
次に、このリソースグループ内にVMを作るモジュールを呼び出しています。
module vm 'modules/vm.bicep' = {
name: 'azure-vm'
scope: rg
params: {
vmName: 'youtube-vm'
}
}
モジュールには VM名だけ を引数として渡しています。内部の詳細なリソース構成はモジュール側(vm.bicep)にカプセル化されているため、呼び出し元はシンプルに保てます。
vm.bicep モジュールの構成
vm.bicep は受け取ったVM名をもとに、以下の4つのリソースを作成します。
| リソース | 概要 |
|---|---|
| パブリック IP アドレス | VMへの外部アクセス用 |
| 仮想ネットワーク(VNet) | VM が所属するネットワーク |
| サブネット | VNet内のネットワーク区画 |
| ネットワークインターフェイス(NIC) | VMとネットワークを接続するインターフェイス |
パラメーターは vmName の1つだけを受け取り、各リソースの名前付けに利用しています。
param vmName string
GitHub Actions によるデプロイ
このBicepテンプレートのデプロイにはGitHub Actionsを使っています。リポジトリの Settings → Secrets に AZURE_CREDENTIALS という名前でAzureの認証情報を登録しており、ワークフローはこのシークレットを使って認証を行います。
ワークフローはサブスクリプションレベルのデプロイを実行するため、Azure CLIコマンドは以下のような形になります。
az deployment sub create \
--location japaneast \
--template-file main.bicep
デプロイ結果の確認
Azure ポータルでデプロイ結果を確認したところ、リソースグループ youtube-vm の展開が正常に完了していました。リソースグループの中を見ると、次のリソースが作成されています。
- パブリック IP アドレス
- 仮想ネットワーク(サブネット1個を含む)
- ネットワークインターフェイス(NIC)
仮想ネットワークの中には default という名前のサブネットが1つ存在しており、NICがそこに接続されています。VM本体のデプロイは進行中の段階も確認でき、インフラの前段となるネットワークリソースが順次作られていく流れが確認できました。
まとめ
今回はBicep入門シリーズのここまでの内容を整理しました。
targetScope = 'subscription'を指定することで、リソースグループの作成からBicepで管理できます- モジュール化によって
main.bicepはシンプルに保ちつつ、vm.bicepの中でパブリックIP・VNet・NICをまとめて定義しています - GitHub Actionsのシークレットに
AZURE_CREDENTIALSを登録することで、CI/CDパイプラインからサブスクリプションレベルのデプロイが実行できます
次回以降はVM本体の定義や、さらに複雑なモジュール構成に進んでいく予定です。