Exercice - Déployer vos modèles ARM
Notes
La première fois que vous activez un bac à sable et que vous acceptez les conditions d’utilisation, votre compte Microsoft est associé à un nouvel annuaire Azure appelé Microsoft Learn Sandbox (Bac à sable Microsoft Learn). Vous êtes ajouté à un abonnement spécial nommé Abonnement Concierge.
Ici, vous déployez un modèle Azure Resource Manager (ARM) à partir de votre ordinateur et à partir d’un dépôt GitHub en spécifiant un URI.
Important
Cet exercice utilise les Outils Azure Resource Manager pour Visual Studio Code. Veillez à installer cette extension dans Visual Studio Code.
Configurer votre environnement avec l’abonnement Bac à sable Microsoft Learn
Pour effectuer chaque déploiement de cette unité, vous devez vous connecter à votre compte Azure à partir du terminal Visual Studio Code.
Veillez à vous connecter au même compte que celui qui a activé le bac à sable (sandbox).
Connexion à Azure
À partir du terminal dans Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure. L’exécution de cette commande ouvre un navigateur qui vous permet de vous connecter à votre compte.
Connect-AzAccount
Une fois que vous êtes connecté, vous voyez dans le terminal une liste des abonnements associés à ce compte. Si vous avez activé le bac à sable, l’abonnement Concierge doit figurer dans cette liste.
Vérifiez le nom de l’abonnement. La commande suivante liste vos abonnements, leurs noms et leurs ID dans un format de tableau facile à lire. Recherchez
Concierge Subscription
.Get-AzSubscription
Remplacez votre abonnement actif par l’abonnement Concierge.
$context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
Définir le groupe de ressources par défaut
Vous devez maintenant définir le groupe de ressources créé pour vous dans le bac à sable (sandbox) comme groupe de ressources par défaut. Pour effectuer cette opération, vous devez d’abord obtenir le nom du groupe de ressources en exécutant la commande suivante.
Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault
Dans cette commande, utilisez le nom de ressource que vous avez obtenu avec la commande précédente. (Il doit ressembler à ceci : learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Cette commande vous permet d’omettre ce paramètre dans le reste des commandes Azure PowerShell de cet exercice.
Notes
Normalement, quand vous utilisez une commande PowerShell ou Azure CLI pour déployer un modèle, vous devez spécifier le nom du groupe de ressources cible. En exécutant la commande précédente, nous avons défini le contexte de notre déploiement. Nous avons spécifiez le nom de notre groupe de ressources de bac à sable en exécutant la commande PowerShell Set-AzDefault :
Set-AzDefault -ResourceGroupName {Resource Group Name}
Déployer un modèle local
Dans l’exercice suivant, vous allez déployer un modèle à partir de votre ordinateur local. Le nom du groupe de ressources que vous utilisez normalement lors du déploiement dans votre propre environnement n’est pas nécessaire ici, car nous avons déjà défini le groupe de ressources par défaut dans la section précédente.
Pour démarrer, copiez le contenu du code de modèle suivant et collez-le dans un fichier, dans un répertoire local. Par exemple, utilisez
C:\JSON\maintemplate.json
.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Après avoir enregistré le fichier localement, vous pouvez utiliser la commande PowerShell pour le déployer au niveau du groupe de ressources dont nous avons parlé dans la dernière unité. Par exemple, exécutez la commande New-AzResourceGroupDeployment.
$templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Une fois l’opération terminée, vos résultats doivent ressembler à cet exemple.
DeploymentName : DeployLocalTemplate-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:50:04 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Déployer le même modèle local avec des valeurs de paramètres
Dans l’exercice précédent, vous avez déployé votre modèle en utilisant la valeur par défaut du paramètre. Quand vous déployez un modèle ARM local, vous devrez peut-être passer des valeurs de paramètre. Vous pouvez utiliser des paramètres inline ou un fichier de paramètres.
Pour transmettre des paramètres inline à votre déploiement, vous devez fournir les noms du paramètre avec l’applet de commande New-AzResourceGroupDeployment
. Dans l’exercice suivant, vous allez passer les paramètres en tant que paramètres inline et sous la forme d’un fichier de paramètres.
En utilisant le même modèle que dans l’exercice précédent, construisez une table de hachage qui contiendra les valeurs pour les paramètres de modèle requis.
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-2-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterObject $parameters
Une fois l’opération terminée, vos résultats doivent ressembler à ceci :
DeploymentName : DeployLocalTemplate-2-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:51:55 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Plutôt que de passer les paramètres en tant que valeurs inline dans votre script, il peut être plus facile d’utiliser un fichier JSON contenant les valeurs des paramètres. Le fichier de paramètres peut être un fichier local ou un fichier externe/distant avec un URI accessible. Pour plus d’informations sur le fichier de paramètres, consultez Créer un fichier de paramètres Resource Manager.
Pour passer un fichier de paramètres local, nous utilisons le paramètre
TemplateParameterFile
dans la même commande qu’auparavant. Mais tout d’abord, vous devez créer et enregistrer votre fichier de paramètres.Étant donné que nous utilisons Visual Studio Code avec l’extension Outils Azure Resource Manager, vous pouvez ouvrir le modèle ARM que vous avez enregistré localement et cliquer sur le lien Sélectionner/créer un fichier de paramètres....
Sélectionnez Nouveau dans le menu, puis sélectionnez Uniquement les paramètres requis. L’extension crée un fichier de paramètres basé sur le modèle actuellement ouvert.
Utilisez la commande PowerShell suivante avec le paramètre
TemplateParameterFile
.$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $TemplateParameterFile= "C:\JSON\maintemplate.parameters.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-3-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterFile $TemplateParameterFile
Après le déploiement, vos résultats doivent ressembler à l’exemple suivant.
DeploymentName : DeployLocalTemplate-3-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:54:40 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Déployer un modèle externe ou distant
Dans certains cas, vous devez effectuer le déploiement à partir d’un emplacement externe ou distant, et non pas à partir d’un modèle sur votre ordinateur local. Vous pouvez stocker des modèles dans un dépôt de contrôle de code source (par exemple, GitHub). Vous pouvez aussi les stocker dans un compte de stockage Azure pour mettre en place un accès partagé dans votre organisation.
Pour déployer un modèle externe, utilisez le paramètre
TemplateUri
.Dans l’exercice suivant, vous allez déployer un modèle ARM à partir d’un dépôt GitHub. Le dépôt étant public, vous n’avez pas à vous soucier du déploiement d’un modèle nécessitant un jeton de signature d’accès partagé (SAS). Pour plus d’informations sur l’utilisation d’un emplacement distant privé ou sécurisé, consultez Déployer un modèle privé avec un jeton SAS.
L’URI de modèle pour cet exercice est https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Il s’agit d’un modèle concis qui déploiera un compte de stockage de base dans votre environnement bac à sable.
La commande PowerShell est exactement la même que pour un modèle local. La seule différence est que le paramètre
-TemplateUri
remplace le paramètre-TemplateFile
.Utilisez le code suivant pour effectuer le déploiement dans le bac à sable fourni :
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-4-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Les résultats ressemblent à la capture d’écran suivante. Ils indiquent les détails de l’emplacement du modèle.
DeploymentName : DeployLocalTemplate-4-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:56:55 p.m. Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ==================== ========================= ========== storageAccountType String Standard_LRS location String westus Outputs : Name Type Value ==================== ========================= ========== storageAccountName String storepgxosadmbq77e DeploymentDebugLogLevel :
Notes
Cette section a été écrite à l’aide de commandes Azure CLI dans le sous-système Windows Linux (WSL2) sur Windows 10. Les commandes sont les mêmes, que vous utilisiez Azure CLI dans un interpréteur de commandes PowerShell, CMD ou Bash. Toutefois, la manière dont les variables sont adressées peut différer.
Connexion à Azure
À partir du terminal dans Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure. L’exécution de cette commande ouvre un navigateur qui vous permet de vous connecter à votre compte.
az login
Une fois que vous êtes connecté, vous voyez dans le terminal une liste JSON des abonnements associés à ce compte. Si vous avez activé le bac à sable, l’abonnement Concierge doit figurer dans cette liste.
Obtenir l’ID d’abonnement. L’exécution de la commande suivante liste vos abonnements et leurs ID. L’ID d’abonnement est la troisième colonne. Recherchez
Concierge Subscription
et copiez la troisième colonne. Elle doit se présenter commeaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Modifiez votre abonnement actif par l’abonnement concierge. Veillez à remplacer
{Your subscription ID}
par l’ID de l’abonnement Concierge que vous avez obtenu dans la commande précédente.az account set -s {Your subscription ID}
Définir le groupe de ressources par défaut
Vous devez maintenant définir le groupe de ressources créé pour vous dans le bac à sable (sandbox) comme groupe de ressources par défaut. Pour effectuer cette opération, vous devez d’abord récupérer le nom du groupe de ressources à l’aide de la commande suivante :
az group list -o table
Dans cette commande, utilisez le nom de ressource que vous avez obtenu avec la commande précédente. (Il doit ressembler à ceci : learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Cette commande vous permet d’omettre ce paramètre dans le reste des commandes Azure CLI de cet exercice.
Notes
Normalement, quand vous utilisez une commande Azure CLI pour déployer un modèle, vous devez spécifier le nom du groupe de ressources cible. Dans l’exercice de ce module, nous passons outre cette exigence en définissant le contexte de notre déploiement. Nous spécifions le nom de notre groupe de ressources de bac à sable à l’étape suivante à l’aide de la commande Azure CLI az configure.
az configure --defaults group={Resource Group Name}
Déployer un modèle local
Dans l’exercice suivant, vous allez déployer un modèle à partir de votre ordinateur local. Le nom du groupe de ressources que vous utilisez normalement lors du déploiement dans votre propre environnement n’est pas nécessaire ici, car nous avons déjà défini le groupe de ressources par défaut dans la section précédente.
Pour démarrer, copiez le contenu du code de modèle suivant et collez-le dans un fichier, dans un répertoire local. Par exemple, utilisez
C:\JSON\maintemplate.json
ou/mnt/c/Users/you/json/maintemplate.json
.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Après avoir enregistré le fichier localement, vous pouvez utiliser la commande Azure CLI pour le déployer au niveau du groupe de ressources dont nous avons parlé dans la dernière unité. À savoir, utilisez az deployment group create.
Notes
Dans l’exemple suivant, le fichier de modèle se trouve dans un dossier json sur le lecteur de base, dans le sous-système Windows Linux (WSL2). Ajustez votre commande en fonction de l’interpréteur de commandes de votre choix.
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile
Une fois l’exécution terminée, la sortie résultante doit ressembler à l’exemple suivant. Pour vérifier que votre déploiement a réussi, recherchez la ligne
"provisioningState": "Succeeded"
.{ "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19", "location": null, "name": "DeployLocalTemplate-2020-08-19", "properties": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "debugSetting": null, "dependencies": [], "duration": "PT8.9060761S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T14:47:06.403362+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
Déployer le même modèle local avec des valeurs de paramètres
Dans l’exercice précédent, vous avez déployé votre modèle en utilisant la valeur par défaut du paramètre. Quand vous déployez un modèle ARM local, vous devrez peut-être passer des valeurs de paramètre. Vous pouvez utiliser des paramètres inline ou un fichier de paramètres.
Dans l’exercice suivant, vous allez passer des paramètres inline à votre déploiement. Vous devez fournir les noms des paramètres, que vous utilisiez des paramètres inline ou un fichier de paramètres, à l’aide de la commande az deployment group create
.
En utilisant le même modèle que dans l’exercice précédent, construisez une variable qui contiendra les paramètres dans un format de chaîne JSON pour les paramètres de modèle requis.
Remarque
Dans l’exemple suivant, le fichier de modèle se trouve dans un dossier json dans le sous-système Windows Linux (WSL2). Ajustez votre commande en fonction de l’interpréteur de commandes et du système d’exploitation de votre choix.
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-2-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters "$parameters"
Une fois l’opération terminée, vos résultats doivent ressembler à ceux de l’exemple suivant. Consultez la section
"parameters"
et la valeur"provisioningState"
pour vérifier la réussite de la commande.{- Finished .. "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19", "location": null, "name": "DeployLocalTemplate-2-2020-08-19", "properties": { "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "debugSetting": null, "dependencies": [], "duration": "PT4.6990388S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T16:40:20.249786+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
Plutôt que de passer les paramètres en tant que valeurs inline dans votre script, il peut être plus facile d’utiliser un fichier JSON contenant les valeurs des paramètres. Le fichier de paramètres peut être un fichier local ou un fichier externe/distant avec un URI accessible. Pour plus d’informations sur le fichier de paramètres, consultez Créer un fichier de paramètres Resource Manager.
Pour passer un fichier de paramètres local, nous utilisons le paramètre
--parameters
dans la même commande qu’auparavant. Mais tout d’abord, vous devez créer et enregistrer votre fichier de paramètres.Étant donné que nous utilisons Visual Studio Code avec l’extension Outils Azure Resource Manager, vous pouvez ouvrir le modèle ARM que vous avez enregistré localement et cliquer sur le lien Sélectionner ou créer un fichier de paramètres pour activer la validation complète.
Sélectionnez Nouveau dans le menu. L’extension crée un fichier de paramètres basé sur le modèle actuellement ouvert.
Utilisez la commande Azure CLI suivante avec le paramètre
--parameters
.Notes
Dans l’exemple suivant, le fichier de modèle se trouve dans un dossier json dans le sous-système Windows Linux (WSL2). Ajustez la commande en fonction de l’interpréteur de commandes et du système d’exploitation de votre choix.
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json templateparameterfile=/mnt/c/Users/<UserName>/json/maintemplate.parameters.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-3-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters $templateparameterfile
Après le déploiement, vos résultats doivent ressembler à l’exemple suivant.
{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff", "debugSetting": null, "dependencies": [], "duration": "PT4.2058912S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T20:42:44.069215+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }
Déployer un modèle externe ou distant
Dans certains cas, vous devez effectuer le déploiement à partir d’un emplacement externe ou distant, et non pas à partir d’un modèle sur votre ordinateur local. Vous pouvez stocker des modèles dans un dépôt de contrôle de code source (par exemple, GitHub). Vous pouvez aussi les stocker dans un compte de stockage Azure pour mettre en place un accès partagé dans votre organisation.
- Pour déployer un modèle externe, utilisez le paramètre
--template-uri
.
Dans cet exercice, vous allez déployer un modèle ARM à partir d’un dépôt GitHub. Le dépôt étant public, vous n’avez pas à vous soucier du déploiement d’un modèle nécessitant un jeton de signature d’accès partagé (SAS). Pour plus d’informations sur l’utilisation d’un emplacement distant privé ou sécurisé, consultez Déployer un modèle privé avec un jeton SAS.
L’URI de modèle pour cet exercice est https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Il s’agit d’un modèle concis qui déploiera un compte de stockage de base dans votre environnement bac à sable.
La commande Azure CLI est exactement la même que pour un modèle local. La seule différence est que le paramètre
--template-uri
remplace le paramètre--template-file
.Utilisez le code suivant pour effectuer le déploiement dans le bac à sable fourni :
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-4-"$today az deployment group create \ --name $deploymentname \ --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Les résultats ressemblent au bloc de code suivant. Ils indiquent les détails de l’emplacement du modèle dans la section
"templateLink"
. Ils montrent également si le déploiement a réussi dans la section"provisioningState"
.{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19", "location": null, "name": "DeployLocalTemplate-4-2020-08-19", "properties": { "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa", "debugSetting": null, "dependencies": [], "duration": "PT24.3286124S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": { "storageAccountName": { "type": "String", "value": "store7zk7eyqew54l4" } }, "parameters": { "location": { "type": "String", "value": "westus" }, "storageAccountType": { "type": "String", "value": "Standard_LRS" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Storage", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "storageAccounts" } ] } ], "provisioningState": "Succeeded", "templateHash": "12600309984865991765", "templateLink": { "contentVersion": "1.0.0.0", "id": null, "relativePath": null, "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" }, "timestamp": "2020-08-19T20:53:36.759312+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }