Étendre des ressources avec des fournisseurs de ressources personnalisés
Ce didacticiel explique comment déployer dans Azure un fournisseur de ressources personnalisé qui étend l’API Azure Resource Manager avec le type de ressource Microsoft. CustomProviders/associations. Ce tutoriel montre comment étendre des ressources existantes qui se trouvent en dehors du groupe de ressources où se trouve l’instance du fournisseur de ressources personnalisé. Dans ce didacticiel, le fournisseur de ressources personnalisé est alimenté par une application logique Azure, mais vous pouvez utiliser n’importe quel point de terminaison d’API public.
Prérequis
Pour suivre ce tutoriel, vérifiez les éléments suivants :
- Les capacités des fournisseurs de ressources personnalisés Azure.
- Les informations de base sur l’intégration de ressources avec des fournisseurs de ressources personnalisés.
Prise en main de l’intégration de ressources
Dans ce tutoriel, deux éléments doivent être déployés : le fournisseur de ressources personnalisé et l’association. Pour faciliter le processus, vous pouvez utiliser un modèle unique qui déploie les deux.
Le modèle utilisera les ressources suivantes :
- Microsoft.CustomProviders/resourceProviders
- Microsoft.Logic/workflows
- Microsoft.CustomProviders/associations
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"allowedValues": [
"australiaeast",
"eastus",
"westeurope"
],
"metadata": {
"description": "Location for the resources."
}
},
"logicAppName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]",
"metadata": {
"description": "Name of the logic app to be created."
}
},
"customResourceProviderName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]",
"metadata": {
"description": "Name of the custom resource provider to be created."
}
},
"customResourceProviderId": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The resource ID of an existing custom resource provider. Provide this to skip deployment of new logic app and custom resource provider."
}
},
"associationName": {
"type": "string",
"defaultValue": "myAssociationResource",
"metadata": {
"description": "Name of the custom resource that is being created."
}
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"condition": "[empty(parameters('customResourceProviderId'))]",
"name": "customProviderInfrastructureTemplate",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"logicAppName": {
"type": "string",
"defaultValue": "[parameters('logicAppName')]"
}
},
"resources": [
{
"type": "Microsoft.Logic/workflows",
"apiVersion": "2019-05-01",
"name": "[parameters('logicAppName')]",
"location": "[parameters('location')]",
"properties": {
"state": "Enabled",
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Switch": {
"cases": {
"Case": {
"actions": {
"CreateCustomResource": {
"inputs": {
"body": {
"properties": "@addProperty(triggerBody().Body['properties'], 'myDynamicProperty', 'myDynamicValue')"
},
"statusCode": 200
},
"kind": "Http",
"type": "Response"
}
},
"case": "CREATE"
}
},
"default": {
"actions": {
"DefaultHttpResponse": {
"inputs": {
"statusCode": 200
},
"kind": "Http",
"type": "Response"
}
}
},
"expression": "@triggerBody().operationType",
"type": "Switch"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"CustomProviderWebhook": {
"inputs": {
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
}
}
},
{
"type": "Microsoft.CustomProviders/resourceProviders",
"apiVersion": "2018-09-01-preview",
"name": "[parameters('customResourceProviderName')]",
"location": "[parameters('location')]",
"properties": {
"resourceTypes": [
{
"name": "associations",
"mode": "Secure",
"routingType": "Webhook,Cache,Extension",
"endpoint": "[[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows', parameters('logicAppName')), '/triggers/CustomProviderWebhook'), '2019-05-01').value]"
}
]
}
}
],
"outputs": {
"customProviderResourceId": {
"type": "string",
"value": "[resourceId('Microsoft.CustomProviders/resourceProviders', parameters('customResourceProviderName'))]"
}
}
}
}
},
{
"type": "Microsoft.CustomProviders/associations",
"apiVersion": "2018-09-01-preview",
"name": "[parameters('associationName')]",
"location": "global",
"properties": {
"targetResourceId": "[if(empty(parameters('customResourceProviderId')), reference('customProviderInfrastructureTemplate').outputs.customProviderResourceId.value, parameters('customResourceProviderId'))]",
"myCustomInputProperty": "myCustomInputValue",
"myCustomInputObject": {
"Property1": "Value1"
}
}
}
],
"outputs": {
"associationResource": {
"type": "object",
"value": "[reference(parameters('associationName'), '2018-09-01-preview', 'Full')]"
}
}
}
Déployer l’infrastructure du fournisseur de ressources personnalisé
La première partie du modèle déploie l’infrastructure du fournisseur de ressources personnalisé. Cette infrastructure définit l’effet de la ressource associations. Pour plus d’informations sur les fournisseurs de ressources personnalisées, consultez la Vue d’ensemble des fournisseurs de ressources personnalisés.
Déployons l’infrastructure du fournisseur de ressources personnalisé. Copiez, enregistrez et déployez le modèle précédent, ou suivez et la procédure de déploiement via le portail Azure.
Accédez au portail Azure.
Recherchez Modèles dans Tous les services ou en utilisant la zone de recherche principale :
Dans le volet Modèles, sélectionnez Ajouter :
Sous Général, entrez un Nom et une Description pour le nouveau modèle :
Créez le modèle Resource Manager en copiant dans le modèle JSON à partir de la section « Prise en main de l’intégration de ressources » de cet article :
Sélectionnez Ajouter pour créer le modèle. Si le nouveau modèle n’apparaît pas, sélectionnez Actualiser.
Sélectionnez le modèle nouvellement créé, puis choisissez Déployer :
Entrez les paramètres des champs obligatoires, puis sélectionnez l’abonnement et le groupe de ressources. Vous pouvez laisser la zone ID du fournisseur de ressources personnalisé vide.
Nom du paramètre Requis ? Description Emplacement Oui Emplacement des ressources dans le modèle. Nom de l’application logique Non Nom de l’application logique. Nom du fournisseur de ressources personnalisé Non Nom du fournisseur de ressources personnalisé. ID du fournisseur de ressources personnalisé Non Fournisseur de ressources personnalisé prenant en charge la ressource d’association. Si vous spécifiez une valeur ici, le déploiement de l’application logique et du fournisseur de ressources personnalisé sont ignorés. Nom de l’association Non Nom de la ressource d’association. Exemples de paramètres :
Accédez au déploiement et attendez qu’il se termine. Un écran similaire à cette capture d’écran doit s’afficher. Vous devez voir la nouvelle ressource d’association comme sortie :
Voici le groupe de ressources, avec l’option Afficher les types masqués sélectionnée :
Explorez l’onglet Historique des exécutions de l’application logique afin de voir les appels pour la création d’association :
Déployer des associations supplémentaires
Une fois l’infrastructure du fournisseur de ressources personnalisé configurée, vous pouvez facilement déployer davantage d’associations. Le groupe de ressources pour les associations supplémentaires n’a pas besoin d’être le même que le groupe de ressources dans lequel vous avez déployé l’infrastructure du fournisseur de ressources personnalisé. Pour créer une association, vous devez disposer d’autorisations Microsoft.CustomProviders/resourceproviders/write sur l’ID du fournisseur de ressources personnalisé spécifié.
Accédez à la ressource Microsoft.CustomProviders/resourceProviders du fournisseur de ressources personnalisé dans le groupe de ressources du déploiement précédent. Vous devez activer la case à cocher Afficher les types masqués :
Copiez la propriété ID de ressource du fournisseur de ressources personnalisé.
Recherchez Modèles dans Tous les services ou en utilisant la zone de recherche principale :
Sélectionnez le modèle créé précédemment, puis choisissez Déployer :
Entrez les paramètres des champs obligatoires, puis sélectionnez l’abonnement et un autre groupe de ressources. Pour le paramètre ID du fournisseur de ressources personnalisé, entrez l’ID de ressource que vous avez copié à partir du fournisseur de ressources personnalisé que vous avez déployé précédemment.
Accédez au déploiement et attendez qu’il se termine. Il doit maintenant déployer uniquement la nouvelle ressource associations :
Vous pouvez revenir à l’Historique d’exécution de l’application logique, et voir qu’un autre appel a été adressé à l’application logique. Vous pouvez mettre à jour l’application logique pour augmenter les fonctionnalités supplémentaires de chaque association créée.
Étapes suivantes
Cet article explique comment déployer dans Azure un fournisseur de ressources personnalisé qui étend l’API Azure Resource Manager avec le type de ressource Microsoft. CustomProviders/associates. Pour continuer à découvrir les fournisseurs de ressources personnalisés, consultez :