Bicep ファイルの構造と構文について

完了

Azure Bicep には独自の構文が付属していますが、理解とフォローは簡単です。 構文と構造については詳しく説明しませんが、例を使用して主な概念を確認しましょう。

Bicep .bicep ファイルのサンプル

@minLength(3)
@maxLength(11)
param storagePrefix string

param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
    name: uniqueStorageName
    location: location
    sku: {
        name: storageSKU
    }
    kind: 'StorageV2'
    properties: {
        supportsHttpsTrafficOnly: true
    }

    resource service 'fileServices' = {
        name: 'default'

        resource share 'shares' = {
            name: 'exampleshare'
        }
    }
}

module webModule './webApp.bicep' = {
    name: 'webDeploy'
    params: {
        skuName: 'S1'
        location: location
    }
}

output storageEndpoint object = stg.properties.primaryEndpoints

スコープ

既定では、すべてのテンプレートのターゲット スコープは resourceGroupに設定されますが、明示的に設定することでカスタマイズできます。 その他の使用可能な値として、subscriptionmanagementGroup、および tenantします。

パラメーター

前のユニットのパラメーターは既に使用しています。 これにより、名前、場所、プレフィックスなどに潜在的な値を指定することで、実行時にテンプレートのデプロイをカスタマイズできます。

パラメーターには、エディターが検証できる型と、デプロイ時に省略可能にする既定値も含まれます。 さらに、作成から無効な値を防ぐことで、デプロイの信頼性を高める検証規則を持つことができます。 詳細については、「Bicep でのパラメーター」を参照してください。

変数

パラメーターと同様に、変数は、より堅牢で読みやすいテンプレートを作成する上で役割を果たします。 任意の複雑な式を変数に格納し、テンプレート全体で使用できます。 変数を定義すると、値から型が推論されます。

上記の例では、uniqueStorageName を使用してリソース定義を簡略化しています。 詳細については、「Bicep 変数」を参照してください。

リソース

resource キーワードは、テンプレートでリソースを宣言する必要がある場合に使用されます。 リソース宣言にはリソースのシンボリック名があり、後でそのリソースを参照してサブリソースを定義したり、そのプロパティを親子関係などの暗黙的な依存関係に使用したりできます。

locationnamepropertiesなど、すべてのリソースに共通する特定のプロパティがあります。 リソースの価格レベルや SKUなどをカスタマイズするために使用できるリソース固有のプロパティがあります。

親を参照することで、リソース内または外部でサブリソースを定義できます。 上記の例では、ストレージ アカウント リソース内でファイル共有が定義されています。 リソースの外部でリソースを定義する場合は、テンプレートを変更する必要があります。

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

resource service 'Microsoft.Storage/storageAccounts/fileServices@2021-02-01' = {
    name: 'default'
    parent: storage
}

resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2021-02-01' = {
    name: 'exampleshare'
    parent: service
}

詳細については、Bicep でのリソース宣言を参照してください。

モジュール

本当に再利用可能なテンプレートが必要な場合は、モジュールの使用を避けることはできません。 モジュールを使用すると、他の Bicep ファイルで Bicep ファイルを再利用できます。 モジュールでは、デプロイする必要がある内容と必要なパラメーターを定義し、別のファイルで再利用する場合は、ファイルを参照してパラメーターを指定するだけです。 残りは Azure Bicep によって管理されます。

上記の例では、おそらく App Serviceをデプロイしているモジュールを使用しています。 詳細については、「Bicep でのモジュールの使用」を参照してください。

出力

出力を使用すると、CI/CD パイプライン内にある場合でも、ローカル ターミナル内にある場合でも、Cloud Shell 場合でも、デプロイから外部に値を渡すことができます。 これにより、デプロイが完了した後で、ストレージ エンドポイントやアプリケーション URL などの値にアクセスできるようになります。

必要なのは、output キーワードとアクセスするプロパティです。

output storageEndpoint endpoints = stg.properties.primaryEndpoints

詳細については、Bicep 出力セクションを参照してください。

その他の機能

Bicep ファイル内には、ループ、条件付きデプロイ、複数行文字列、既存のクラウド リソースの参照など、他にも多くの機能があります。 実際、ARM テンプレート内の有効な関数は、Bicep ファイル内でも有効です。

次の手順

次のユニットでは、Azure パイプラインで Bicep を使用する方法について説明します。