テンプレート スペックをデプロイする
テンプレート スペックを作成して発行したら、それをデプロイできます。 このユニットでは、テンプレート スペックをデプロイする方法について学習します。
テンプレート スペックを使用してデプロイを作成する
テンプレート スペックをリソース グループにデプロイするには、使い慣れた同じ New-AzResourceGroupDeployment
コマンドレットを使用します。 テンプレート ファイルを指定する代わりに、テンプレート スペックのリソース ID を指定します。その例を次に示します。
New-AzResourceGroupDeployment `
-TemplateSpecId '/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS'
テンプレート スペックはリソース グループ内に作成する必要がありますが、そのデプロイ先は、サブスクリプションや管理グループ、またはテナントでもかまいません。デプロイには、こちらのコマンドレットを使用します。
このスコープにデプロイするには: | 次の PowerShell コマンドレットを使用します。 |
---|---|
Resource group | New-AzResourceGroupDeployment |
サブスクリプション | New-AzSubscriptionDeployment |
管理グループ | New-AzManagementGroupDeployment |
Tenant | New-AzTenantDeployment |
これらのコマンドレットはそれぞれ、-TemplateSpecId
パラメーターを受け取り、対応するいずれかのスコープでテンプレート スペックのデプロイを開始します。
テンプレート スペックをリソース グループにデプロイするには、使い慣れた同じ az deployment group create
コマンドを使用します。 テンプレート ファイルを指定する代わりに、テンプレート スペックのリソース ID を指定します。その例を次に示します。
az deployment group create \
--template-spec "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS"
テンプレート スペックはリソース グループ内に作成する必要がありますが、そのデプロイ先は、サブスクリプションや管理グループ、またはテナントでもかまいません。デプロイには、こちらのコマンドを使用します。
このスコープにデプロイするには: | 次の Azure CLI コマンドを実行します。 |
---|---|
Resource group | az deployment group create |
サブスクリプション | az deployment sub create |
管理グループ | az deployment mg create |
Tenant | az deployment tenant create |
これらのコマンドはそれぞれ、--template-spec
引数を受け取り、対応するいずれかのスコープでテンプレート スペックのデプロイを開始します。
リンクされたデプロイとしてテンプレート スペックを使用する
テンプレート スペックを別の Azure Resource Manager テンプレート (ARM テンプレート) 内から使用するには、テンプレート スペックを使用するデプロイを作成します。この種類のデプロイは、"リンクされたデプロイ" と呼ばれます。これは、外部で指定されたデプロイ テンプレートにリンクしているためです。
Azure におけるデプロイとは、Microsoft.Resources/deployments
という種類のリソースです。 ARM テンプレートをデプロイする際は、デプロイ リソースを作成することになります。 テンプレート スペックをデプロイする際も、同じ概念が当てはまります。その例を次に示します。
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createStorage",
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
}
}
}
テンプレート スペックのデプロイに渡すパラメーターがあるときは、parameters
プロパティを使用します。
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createStorage",
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
},
"parameters": {
"storageAccountName": {
"value": "[parameters('storageAccountName')]"
}
}
}
}
テンプレート スペックを Bicep モジュールとして使用する
テンプレート スペックは、Bicep ファイル内のモジュールとして使うことができます。
module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
name: 'storageAccountTemplateSpec'
}
モジュール パスには特殊な形式が使用されていることに注目してください。
モジュール パスには、コロン (:
) 文字で区切られた 3 つの構成要素があります。
- スキーム: Bicep では、"スキーム" と呼ばれるいくつかの種類のモジュールがサポートされています。 テンプレート スペックをモジュールとして使用する場合は、
ts
をスキームとして使用します。 - サブスクリプション ID、リソース グループ名、テンプレート スペック名:これらの値は、前に発行したテンプレート スペック リソースの場所を指定する必要があります。 スラッシュ (
/
) を使用して、サブスクリプション ID、リソースグループ名、テンプレート スペック名を区切ります。 モジュール パスのこのセクションは、テンプレート スペックの完全なリソース ID ではありません。これは、リソース ID の構成要素のほんの一部です。 - バージョン: テンプレート スペックのバージョンを含める必要があります。
Note
モジュールへのパスを指定するときに、変数、パラメーター、または文字列補間を使用することはできません。 完全なテンプレート スペック パスは、Bicep ファイルに保存する必要があります。
テンプレート スペックに渡すパラメーターがあるときは、params
プロパティを使用します。
module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
name: 'storageAccountTemplateSpec'
params: {
storageAccountName: storageAccountName
}
}
Bicep ファイルがビルドされると、テンプレート スペック ファイルがダウンロードされ、JSON ARM テンプレートにコピー ("トランスパイル") されます。 この操作は通常、Bicep ファイルをデプロイするときに行われますが、Bicep ツールを使って、bicep build
コマンドを実行して明示的にトランスパイルすることもできます。