Exercice : Déployer et exporter un workflow Azure Logic Apps à l’aide d’un modèle ARM

Effectué

Dans l’exercice précédent, nous avons déployé une application logique à l’aide d’un modèle Azure Resource Manager de base. Le modèle était assez inflexible en ce sens que tout y était codé en dur. Par exemple, pour modifier le nom du workflow ou l’emplacement de déploiement de l’application, vous devrez modifier le modèle. Dans les scénarios où vous effectuez plusieurs déploiements dans un environnement de script, la modification manuelle du modèle devient contraignante. Une meilleure approche consiste à fournir des valeurs en tant que paramètres pour personnaliser le déploiement de ressources.

Mettre à jour notre modèle pour utiliser des paramètres de modèle

  1. Copiez le modèle de base que nous avons utilisé dans l’exercice précédent avec la commande cp suivante :

    cp basic-template.json template-with-params.json
    
  2. Ouvrez le modèle dans l’éditeur intégré avec la commande code suivante :

    code template-with-params.json
    

    La première étape consiste à ajouter des paramètres afin de pouvoir facilement personnaliser le nom et l’emplacement de l’application à l’endroit où l’application s’exécute.

  3. Remplacez la section parameters dans le modèle par l’extrait de code suivant, qui ajoute deux nouveaux paramètres, logicAppName et location :

    "parameters": {
        "logicAppName": {
            "type": "string",
            "metadata": {
              "description": "The name of the logic app to create."
            }
          },
        "location": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "metadata": {
              "description": "Location for all resources."
            }
        }
    },
    

    Les deux paramètres sont des chaînes. Le paramètre logicAppName n’ayant pas de valeur par défaut, vous devrez en fournir une au moment du déploiement. En revanche, location est facultatif dans la mesure où nous fournissons une valeur par défaut.

    La valeur par défaut pour le paramètre location est l’emplacement du groupe de ressources sur lequel l’application est déployée. Nous obtenons cette valeur en référençant la propriété location du groupe de ressources retourné par la fonction de modèle resourceGroup(). Les expressions commencent et se terminent par des crochets gauche et droit ([ ]) respectivement. La valeur de l’expression est évaluée lorsque le modèle termine le déploiement. Une expression peut retourner une chaîne, un entier, une valeur booléenne, un tableau ou un objet. Dans un modèle, vous pouvez définir 256 paramètres comme maximum.

    Maintenant que nous avons défini deux nouveaux paramètres, nous allons les utiliser dans le modèle en remplaçant les valeurs codées en dur par des références à ces paramètres.

  4. Remplacez les champs name et location dans la section de ressources du modèle de manière à utiliser nos nouveaux paramètres, comme indiqué dans l’extrait de code suivant :

    "name": "[parameters('logicAppName')]",
    "location": "[parameters('location')]",
    
  5. Remplacez la section outputs en bas du modèle par le code suivant. Nous mettons à jour la valeur de la variable de modèle logicAppUrl pour utiliser également le paramètre logicAppName, comme indiqué dans l’extrait de code suivant :

    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]"
        }
     }
    
  6. Appuyez sur Ctrl + S pour enregistrer toutes vos modifications apportées à template-with-params.json.

Déployer la ressource d’application logique à l’aide du modèle paramétrable

Il existe deux façons de fournir des paramètres à notre modèle pendant le déploiement à l’aide de l’indicateur --parameters dans la commande az deployment group create. Nous pouvons passer une URI d’un fichier de paramètres distant ou le nom d’un fichier local. Nous allons utiliser un fichier local.

Créer un fichier JSON de paramètres

  1. Créez un fichier appelé params.json dans l’éditeur de code intégré avec la commande suivante :

    code params.json
    
  2. Collez le code JSON suivant dans params.json, puis appuyez sur Ctrl + S pour enregistrer vos modifications.

    { 
        "logicAppName": { 
            "value": "myLogicApp" 
        } 
    }
    

Valider notre modèle

  1. À partir de Cloud Shell, exécutez az deployment group validate pour valider le modèle :

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters @params.json
    

    L’argument --template-file pointe vers le modèle local. Le nom de fichier du modèle est template-with-params.json.

    Vous verrez un grand bloc de code JSON comme sortie, qui indique que le modèle a été validé.

    Azure Resource Manager renseigne les paramètres du modèle et vérifie que le modèle s’exécute correctement dans votre abonnement.

    Si la validation échoue, vous verrez une description détaillée de l’échec dans la sortie.

Déployer un modèle avec des paramètres à partir d’un fichier local

  1. Exécutez la commande suivante dans Cloud Shell pour déployer la ressource de l’application logique avec le nom de l’application provenant du fichier params.json. Le paramètre location n’étant pas défini dans le fichier params.json, la valeur par défaut est utilisée.

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters @params.json
    

    Le déploiement prendra quelques moments ; vous pouvez en suivre la progression sur la ligne de commande Cloud Shell. Une fois le déploiement terminé, le résultat JSON devrait indiquer la valeur Succeeded pour provisioningState.

  2. Pour voir l’application en action, recherchez la valeur logicAppUrl dans le résultat JSON. Sélectionnez l’URL, ou copiez-la et collez-la dans une nouvelle fenêtre de navigateur. La page affiche le message Hello Azure Logic Apps Template!.

Déployer un modèle avec des paramètres à partir de la ligne de commande

Au lieu de modifier un fichier de paramètres chaque fois que nous souhaitons effectuer un déploiement à partir de la ligne de commande, nous pouvons fournir les paramètres dans une chaîne JSON sur la ligne de commande.

  1. Exécutez la commande suivante dans Cloud Shell pour déployer la ressource de l’application logique en indiquant le nom de l’application et son emplacement sous la forme d’une chaîne JSON sur la ligne de commande :

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"MyLogicApp2"}, "location": {"value":"East US"}}'
    

    Le déploiement prendra quelques moments ; vous pouvez en suivre la progression sur la ligne de commande Cloud Shell. Une fois le déploiement terminé, le résultat JSON devrait indiquer la valeur Succeeded pour provisioningState.

  2. Pour voir l’application en action, recherchez la valeur logicAppUrl dans le résultat JSON. Sélectionnez l’URL et collez-la dans une nouvelle fenêtre de navigateur. La page affiche le message Hello Azure Logic Apps Template!.

  3. Exécutez la commande suivante pour lister tous les workflows Azure Logic Apps que nous avons déployés jusqu’à présent :

    az resource list \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --resource-type Microsoft.Logic/workflows \
    --query [*].[name,location] --output tsv
    

    Cette commande liste les deux workflows Azure Logic Apps que nous avons déployés jusqu’à présent, tous à partir d’un modèle.

Mettre à jour l’action de l’application dans le modèle Azure Resource Manager

Faisons à présent en sorte que notre application ne se contente pas de nous envoyer un message statique. Nous allons conserver l’application en tant que workflow déclenché via HTTP et elle enverra toujours une réponse HTTP. Nous allons passer certaines valeurs avec la requête, à partir desquelles l’application devra effectuer un calcul. Nous allons faire un calcul d’aire élémentaire. En supposant que les entrées que nous transmettons sont la hauteur et la largeur d’un rectangle, nous allons retourner l’aire. Nous allons ensuite déployer la nouvelle application et la voir en action.

  1. Ouvrez template-with-params.json dans l’éditeur intégré en exécutant la commande suivante dans Cloud Shell :

    code template-with-params.json
    
  2. Ajoutez le champ relativePath à la section inputs de notre déclencheur de requête HTTP, comme illustré dans l’extrait suivant :

    "inputs": {
        "method": "GET",
        "relativePath": "{width}/{height}",
        "schema": {}
    }
    

    L’entrée relativePath spécifie les paramètres que l’URL du point de terminaison HTTP doit accepter. En l’occurrence, nous définissons deux paramètres, width et theight. Nous allons utiliser les valeurs de ces paramètres pour calculer une aire et retourner le résultat.

  3. Mettez à jour le corps de l’action Response avec la ligne suivante :

    "body": "Response from @{workflow().name}  Total area = @{mul( int(triggerOutputs()['relativePathParameters']['height'])  , int(triggerOutputs()['relativePathParameters']['width'])  )}",
    

    Notre réponse mise à jour effectue les tâches suivantes :

    • Elle affiche le nom de la ressource d’application logique. La réponse appelle la fonction workflow() pour renvoyer des informations sur le workflow. À partir de ce résultat, nous référençons la propriété name.

    • Retourne le produit des équivalents entiers des valeurs de chaîne de hauteur et de largeur des paramètres d’URL. Cette tâche utilise la fonction mul() et la fonction de conversion int().

  4. Appuyez sur Ctrl + S pour enregistrer toutes vos modifications apportées à template-with-params.json.

  5. Validez le modèle après ces modifications avec la commande az deployment group validate dans Cloud Shell. Dans cet exemple, nous définissons le nom de l’application sur CalculateArea à l’aide d’un paramètre inclus.

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
    
  6. Exécutez la commande suivante pour déployer nos modifications sur une application logique nommée CalculateArea. Nous ne préciserons pas de valeur pour le paramètre location, et utiliserons simplement la valeur par défaut.

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
    

    Le déploiement prendra quelques secondes, et vous pouvez en suivre la progression sur la ligne de commande Cloud Shell. Une fois le déploiement terminé, le résultat JSON devrait indiquer la valeur Succeeded pour provisioningState.

  7. Pour voir l’application en action, recherchez la valeur logicAppUrl dans le résultat JSON. Sélectionnez l’URL et collez-la dans une nouvelle fenêtre de navigateur.

  8. Mettez à jour l’URL dans le navigateur, en remplaçant /triggers/manual/paths/invoke?api par /triggers/manual/paths/invoke/{width}/{height}?api, où {width} et {height} sont des valeurs entières pour la largeur et la hauteur de l’aire que nous voulons calculer. Par exemple : /triggers/manual/paths/invoke/6/7?api. La réponse de l’application montre le nom du workflow et l’aire calculée, comme illustré dans la capture d’écran suivante :

    Capture d’écran du navigateur web affichant la réponse de notre application appelée calculateArea.

    Remarque

    Veillez à remplacer uniquement les parties référencées de l’URL à l’étape précédente. Laissez tel quel l’ensemble du texte de chaque côté.

  9. Exécutez la commande suivante pour lister tous les workflows Azure Logic Apps que nous avons déployés jusqu’à présent :

    az resource list \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --resource-type Microsoft.Logic/workflows \
    --query [*].[name,location] --output tsv
    

Dans cet exercice, nous avons introduit davantage de flexibilité dans notre modèle avec des paramètres. Nous avons fourni ces paramètres sur la ligne de commande et en utilisant un fichier local. Nous avons également mis à jour l’action exécutée par notre workflow simple, en changeant directement le body de la réponse à renvoyer.

Vous pouvez télécharger les paramètres et les fichiers de modèle à partir de GitHub en exécutant les commandes curl suivantes dans Cloud Shell.

curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/params.json > params-final.json
curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/template.json > template-with-params-final.json