4

J'essaie d'entrer dans ce modèle de groupe de ressources Visual Studio. Jusqu'à présent, cela semble bien, et j'ai ajouté quelques appsettings pour une application web, mais ma question est, comment puis-je les rendre spécifiques aux emplacements de déploiement? Y a-t-il quelque chose dans le json pour le template ou le fichier de paramètres?Applications spécifiques aux emplacements de déploiement dans le modèle ARM?

Répondre

3

Essayez d'ajouter le code json dans le modèle ARM. Je l'ai testé. Cela fonctionne avec succès.

"resources": [ 
     { 
      "apiVersion": "2015-08-01", 
      "name": "appsettings", 
      "type": "config", 
      "dependsOn": [ 
      "[resourceId('Microsoft.Web/Sites/Slots', variables('webSiteName'), 'Staging')]" 
      ], 
      "properties": { 
      "AppSettingKey1": "Some staging value", 
      "AppSettingKey2": "My second staging setting", 
      "AppSettingKey3": "My third staging setting" 
      } 
     } 
     ] 

Voici mes étapes détaillées:

1. Créez un nouveau projet de groupe de ressources Azure (Plus de détails s'il vous plaît se référer à document)

enter image description here

2. La Démonstration juste pour la configuration de l'application Azure Website Slot App, donc supprimez l'autre ressource du projet.

enter image description here

3. Ajoutez la configuration d'emplacement dans le fichier de déploiement enter image description here

4. Publier le déploiement

enter image description here

Le code complet JSON:

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    "hostingPlanName": { 
     "type": "string", 
     "minLength": 1 
    }, 
    "skuName": { 
     "type": "string", 
     "defaultValue": "S1", 
     "allowedValues": [ 
     "F1", 
     "D1", 
     "B1", 
     "B2", 
     "B3", 
     "S1", 
     "S2", 
     "S3", 
     "P1", 
     "P2", 
     "P3", 
     "P4" 
     ], 
     "metadata": { 
     "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/" 
     } 
    }, 
    "skuCapacity": { 
     "type": "int", 
     "defaultValue": 1, 
     "minValue": 1, 
     "metadata": { 
     "description": "Describes plan's instance count" 
     } 
    } 
    }, 
    "variables": { 
    "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]" 
    }, 
    "resources": [ 
    { 
     "apiVersion": "2015-08-01", 
     "name": "[parameters('hostingPlanName')]", 
     "type": "Microsoft.Web/serverfarms", 
     "location": "[resourceGroup().location]", 
     "tags": { 
     "displayName": "HostingPlan" 
     }, 
     "sku": { 
     "name": "[parameters('skuName')]", 
     "capacity": "[parameters('skuCapacity')]" 
     }, 
     "properties": { 
     "name": "[parameters('hostingPlanName')]" 
     } 
    }, 
    { 
     "apiVersion": "2015-08-01", 
     "dependsOn": [ 
     "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" 
     ], 
     "location": "[resourceGroup().location]", 
     "name": "[variables('webSiteName')]", 
     "properties": { 
     "name": "[variables('webSiteName')]", 
     "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]" 
     }, 
     "resources": [ 
     { 
      "apiVersion": "2015-08-01", 
      "name": "Staging", 
      "type": "slots", 
      "location": "[resourceGroup().location]", 
      "dependsOn": [ 
      "[resourceId('Microsoft.Web/Sites', variables('webSiteName'))]" 
      ], 
      "properties": { 
      }, 
      "resources": [ 
      { 
       "apiVersion": "2015-08-01", 
       "name": "appsettings", 
       "type": "config", 
       "dependsOn": [ 
       "[resourceId('Microsoft.Web/Sites/Slots', variables('webSiteName'), 'Staging')]" 
       ], 
       "properties": { 
       "AppSettingKey1": "Some staging value", 
       "AppSettingKey2": "My second staging setting", 
       "AppSettingKey3": "My third staging setting" 
       } 
      } 
      ] 
     } 

     ], 
     "tags": { 
     "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource", 
     "displayName": "Website" 
     }, 
     "type": "Microsoft.Web/sites" 
    } 
    ] 
} 

Nous pouvons également obtenir le type d'emplacement à partir du azure resource, si vous avez des logements sur le portail Azure. enter image description here Je trouve également un thread similaire dans le SO.

+0

Merci beaucoup! Je ne savais pas qu'il y avait un type de fente. Y a-t-il une documentation du schéma quelque part? – Volker

+0

J'ai mis à jour la réponse et ajouté un snopshot de la ressource azur pour cela. –

+0

@Tom Sun. Exemple de modèle vraiment utile pour les SLOTS. Merci d'avoir posté. –

2

La réponse acceptée est correcte, mais omet une information importante. Sous sa mise en œuvre actuelle, lors de l'échange de slots, la configuration AppSettings pour le slot sera permutée avec le déploiement. Si vous êtes préoccupé par la configuration spécifique aux emplacements, cela n'est probablement pas souhaitable pour vous.

Pour rendre la configuration "collante" dans un emplacement, utilisez la ressource suivante dans votre modèle ARM. Notez que la section slotconfignames a été ajoutée à l'extrait de modèle ARM de la réponse de Tom ci-dessus.

"resources": [ 
     { 
      "apiVersion": "2015-08-01", 
      "name": "appsettings", 
      "type": "config", 
      "dependsOn": [ 
      "[resourceId('Microsoft.Web/Sites/Slots', variables('webSiteName'), 'Staging')]" 
      ], 
      "properties": { 
      "AppSettingKey1": "Some staging value", 
      "AppSettingKey2": "My second staging setting", 
      "AppSettingKey3": "My third staging setting" 
      }, 
     { 
     "apiVersion": "2015-08-01", 
     "name": "slotconfignames", 
     "type": "config", 
     "dependsOn": [ 
      "[resourceId('Microsoft.Web/Sites', variables('webSiteName'))]" 
     ], 
     "properties": { 
      "appSettingNames": [ "AppSettingKey1", "AppSettingKey2" ] 
     } 
     } 
    ] 

Cela fera AppSettingKey1 et AppSettingKey2 collant à la fente de stockage intermédiaire (Ils ne vont pas échanger avec le déploiement).

Voir "Azure Resource Manager Templates Tips and Tricks" from Anthony Chu pour plus de détails sur les paramètres des emplacements collants ainsi que d'autres conseils sur les modèles ARM.

+0

Où pouvons-nous définir la valeur de ces paramètres d'emplacement (AppSettingKey1 et AppSettingKey2)? –

+0

Vous pouvez ajouter les valeurs de ces paramètres dans la section appsettings -> properties comme indiqué dans mon exemple ci-dessus. "AppSettingKey1": "Une valeur de transfert" définit en fait la valeur de l'emplacement. –