LoginSignup
4
1

More than 1 year has passed since last update.

Azure Administrator(AZ-104):Azure管理者向けの前提条件「モジュールと出力(Bicep)」

Last updated at Posted at 2022-12-07

Microsoft Learnを用いたMicrosoft Azure Administrator(AZ-104)の試験内容をまとめる投稿です。
この投稿ではMicrosoft Learnで学ぶ内容をできるだけ簡潔にまとめております。
Azureの勉強を一から始め、AZ-900取得後の資格としてAZ-104取得を目指している方の参考になれば幸いです。
※AZ-900の内容は本投稿では省略しております。再度復習したい方は下記をご参照ください。
Azure Fundamentals(AZ-900):試験合格に向けた学習内容のまとめ

今回の学習内容

◆「モジュールと出力(Bicep)」
◇対応するMicrosoft Learn ラーニングパス
AZ-104:Azure 管理者向けの前提条件
◇まとめとリソース
Azure Resource Manager テンプレートを使用してリソースを構成する
◇対応するモジュール
モジュールを使用して関連リソースをグループ化する

※前回の投稿は下記から確認できます。
Azure Administrator(AZ-104):Azure管理者向けの前提条件「パラメーターと変数を用いた式(Bicep)」

モジュールと出力(Bicep)

モジュール

・個別のBicepファイル(モジュール)を作成し、メインのBicepテンプレートから参照可能
⇒コードの可読性の向上や再利用がしやすくなる
・メインテンプレートからモジュールにパラメーター値を渡すことが可能

◆モジュールのコード例(モジュールに関わる部分以外は省略)
・app Serviceアプリを作成するモジュールをメインテンプレートから参照したい場合

main.bicep
param mainlocation string = 'westus3’

module myModule 'modules/mymodule.bicep' = {
  name: 'MyModule'
  params: {
    location1: mainlocation
  }
}

※コードの意味
・module
別のBicepファイルをモジュールとして使用することをBicepに指示
 -myModule:モジュールのシンボリック名(他の部分で使用するときに参照可能)
 -modules/mymodule.bicep:モジュールファイルへのパス
  今回の場合は「modules」フォルダの「mymodule.bicep」をモジュールとして使用
・name
モジュールごとのデプロイ内容を管理するための名前
・params
モジュール内のパラメーターをメインテンプレートで指定
今回の場合はモジュール内の「location1」パラメーターを「westus3」として指定

modules/mymodule.bicep
param location1 string

resource appServiceApp 'Microsoft.Web/sites@2021-03-01' = {
  name: appServiceAppName
  location: location1
 ~省略~
}

※コードの意味
・param
メインテンプレートから必要なパラメーターを受け取るために定義
・location: location1
メインテンプレートで指定した値が使用される
今回の場合は「appServiceAppName」のリージョンが「westus3」になる

◆モジュール設計の重要な原則
・明確な目的
 -用途や関連するリソースごとにモジュールで分けて定義可能
  例)アプリケーションの監視で使用するすべてのリソースを含むモジュール
  例)ネットワークに関連するリソースをすべて含むモジュール

・すべてのリソースを独自のモジュールに配置しない
 -リソースごとに個別のモジュールを作成しない

・意味のある明確なパラメーターと出力が必要
 -パラメータと出力はメインテンプレートとモジュールでやり取りや処理が必要かどうかの検討が必要

・可能な限り自己完結型とする
 -モジュール内で完結する変数はメインテンプレートで定義せずモジュール内で定義する

・シークレットを出力しない
 -接続文字列やキーなどのシークレット値をモジュールから出力させない

出力

・デプロイされたリソースから値を返す必要がある場合に使用
 例)仮想マシンをデプロイ後SSH接続のためのパブリックIPアドレスを取得したい場合
 例)あるモジュールでデプロイしたリソースの情報をメインテンプレートのパラメーターにしたい場合
・出力には固定値ではなくプロパティを指定することを推奨

◆出力のコード例
・デプロイした仮想マシンにおけるパブリックIPアドレスのFQDNを取得したい場合

Bicep
output ipFqdn string = publicIPAddress.properties.dnsSettings.fqdn

※コードの意味
・output 出力名 データ型 = 出力値
出力を定義していることをBicepに指示
 -publicIPAddress:仮想マシンにおけるパブリックIPアドレスリソースのシンボリック名
 -publicIPAddress.properties.dnsSettings.fqdn:「publicIPAddress」の「dnsSettings」プロパティから「fqdn」を取得

モジュールからの出力

・モジュールでデプロイしたリソースの情報をメインテンプレートに渡すことが可能

◆モジュールから値を出力するコード例(関係のないコードは省略)
・モジュールで作成したapp Serviceアプリのホスト名(URL)をメインテンプレートから出力したい場合

modules/appService.bicep
resource appServiceApp 'Microsoft.Web/sites@2021-03-01' = {
 ~省略~
}

output appServiceAppHostName string = appServiceApp.properties.defaultHostName

※コードの意味
・appServiceApp.properties.defaultHostName
「appServiceApp」リソースの「defaultHostName」プロパティを取得
 -defaultHostName:アプリのデフォルトのホスト名(URL)

main.bicep
module appService 'modules/appService.bicep' = {
 ~省略~
}

output OutputHostName string = appService.outputs.appServiceAppHostName

※コードの意味
・appService.outputs.appServiceAppHostName
「appService」モジュールから出力名「appServiceAppHostName」の出力値を取得

次の学習内容

◆PowerShellのコマンドレットとモジュール

学習内容をまとめたページの一覧

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1