Fonctions logiques pour les modèles ARM

Resource Manager fournit plusieurs fonctions pour effectuer des comparaisons dans votre modèle Azure Resource Manager (modèle ARM) :

Conseil

Nous recommandons Bicep parce qu’il offre les mêmes fonctionnalités que les modèles ARM et que la syntaxe est plus facile d’utilisation. Pour plus d’informations, consultez la fonction logique bool et les opérateurs logiques.

et

and(arg1, arg2, ...)

Vérifie si toutes les valeurs de paramètres sont true.

La fonction and n’est pas prise en charge dans Bicep. Utilisez l’opérateur && à la place.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui boolean La première valeur pour vérifier si c’est true.
arg2 Oui boolean La deuxième valeur pour vérifier si c’est true.
arguments supplémentaires Non boolean Arguments supplémentaires pour vérifier si les valeurs correspondent à true.

Valeur de retour

Retourne True si toutes les valeurs sont true ; sinon, renvoie False.

Exemples

L’exemple suivant montre comment utiliser des fonctions logiques.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

bool

bool(arg1)

Convertit le paramètre en valeur booléenne.

Dans Bicep, utilisez la fonction logique bool.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui chaîne ou entier La valeur à convertir en booléen.

Valeur de retour

Valeur booléenne de la valeur convertie.

Remarques

Vous pouvez également utiliser true() et false() pour obtenir des valeurs booléennes.

Exemples

L’exemple suivant montre comment utiliser le booléen avec une chaîne ou un entier.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueString": {
      "type": "bool",
      "value": "[bool('true')]"
    },
    "falseString": {
      "type": "bool",
      "value": "[bool('false')]"
    },
    "trueInt": {
      "type": "bool",
      "value": "[bool(1)]"
    },
    "falseInt": {
      "type": "bool",
      "value": "[bool(0)]"
    }
  }
}

La sortie de l’exemple précédent avec les valeurs par défaut se présente comme suit :

Nom Type Valeur
trueString Bool True
falseString Bool False
trueInt Bool True
falseInt Bool False

false

false()

Retourne false.

La fonction false n’est pas disponible dans Bicep. Utilisez plutôt le mot clé false.

Paramètres

La fonction false n’accepte aucun paramètre.

Valeur de retour

Valeur booléenne qui correspond toujours à false.

Exemple

L’exemple suivant retourne une valeur de sortie false.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "falseOutput": {
      "type": "bool",
      "value": "[false()]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
falseOutput Bool False

if

if(condition, trueValue, falseValue)

Retourne une valeur indiquant si une condition est true ou false.

La fonction if n’est pas prise en charge dans Bicep. Utilisez plutôt l’opérateur ?:.

Paramètres

Paramètre Obligatoire Type Description
condition Oui boolean La valeur pour vérifier si c’est true ou false.
trueValue Oui chaîne, int, objet ou tableau La valeur à retourner lorsque la condition est true.
falseValue Oui chaîne, int, objet ou tableau La valeur à retourner lorsque la condition est false.

Valeur de retour

Retourne le deuxième paramètre lorsque le premier paramètre est True ; sinon, retourne le troisième paramètre.

Remarques

Lorsque la condition est True, seule la valeur true est évaluée. Lorsque la condition est False, seule la valeur false est évaluée. Avec la fonction if, vous pouvez inclure des expressions qui sont uniquement valides de manière conditionnelle. Par exemple, vous pouvez référencer une ressource qui existe sous une condition, mais pas sous l’autre condition. Vous trouverez un exemple illustrant des expressions évaluant de manière conditionnelle dans la section suivante.

Exemples

L’exemple suivant explique comment utiliser la fonction if.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "yesOutput": {
      "type": "string",
      "value": "[if(equals('a', 'a'), 'yes', 'no')]"
    },
    "noOutput": {
      "type": "string",
      "value": "[if(equals('a', 'b'), 'yes', 'no')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[if(equals('a', 'a'), json('{\"test\": \"value1\"}'), json('null'))]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
yesOutput String Oui
noOutput String non
objectOutput Object { "test": "value1" }

L’exemple de modèle suivant montre comment utiliser cette fonction avec des expressions qui sont uniquement valides de manière conditionnelle.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "logAnalytics": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
   {
      "condition": "[not(empty(parameters('logAnalytics')))]",
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2022-11-01",
      "name": "[format('{0}/omsOnboarding', parameters('vmName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
        "type": "MicrosoftMonitoringAgent",
        "typeHandlerVersion": "1.0",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "workspaceId": "[if(not(empty(parameters('logAnalytics'))), reference(parameters('logAnalytics'), '2015-11-01-preview').customerId, null())]"
        },
        "protectedSettings": {
          "workspaceKey": "[if(not(empty(parameters('logAnalytics'))), listKeys(parameters('logAnalytics'), '2015-11-01-preview').primarySharedKey, null())]"
        }
      }
    }
  ],
  "outputs": {
    "mgmtStatus": {
      "type": "string",
      "value": "[if(not(empty(parameters('logAnalytics'))), 'Enabled monitoring for VM!', 'Nothing to enable')]"
    }
  }
}

not

not(arg1)

Convertit la valeur booléenne à sa valeur opposée.

La fonction not n’est pas prise en charge dans Bicep. Utilisez plutôt l’opérateur !.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui boolean Valeur à convertir.

Valeur de retour

Retourne True lorsque le paramètre est False. Retourne False lorsque le paramètre est True.

Exemples

L’exemple suivant montre comment utiliser des fonctions logiques.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

L’exemple suivant utilise not avecnot.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "checkNotEquals": {
      "type": "bool",
      "value": "[not(equals(1, 2))]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
checkNotEquals Bool True

ou

or(arg1, arg2, ...)

Vérifie si l’une des valeurs du paramètre est true.

La fonction or n’est pas prise en charge dans Bicep. Utilisez plutôt l’opérateur ||.

Paramètres

Paramètre Obligatoire Type Description
arg1 Oui boolean La première valeur pour vérifier si c’est true.
arg2 Oui boolean La deuxième valeur pour vérifier si c’est true.
arguments supplémentaires Non boolean Arguments supplémentaires pour vérifier si les valeurs correspondent à true.

Valeur de retour

Retourne True si l’une des valeurs est true ; sinon, renvoie False.

Exemples

L’exemple suivant montre comment utiliser des fonctions logiques.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

true

true()

Retourne la valeur true.

La fonction true n’est pas disponible dans Bicep. Utilisez plutôt le mot clé true.

Paramètres

La fonction true n’accepte aucun paramètre.

Valeur de retour

Valeur booléenne qui correspond toujours à true.

Exemple

L’exemple suivant retourne une valeur de sortie true.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueOutput": {
      "type": "bool",
      "value": "[true()]"
    }
  }
}

La sortie de l’exemple précédent est :

Nom Type Valeur
trueOutput Bool True

Étapes suivantes