Paramétriser des scripts de déploiement

Effectué

Dans l’unité précédente, vous avez ajouté un comportement personnalisé à un modèle Azure Resource Manager (ARM) afin d’indexer le contenu de départ dans un compte de stockage pour un nouvel environnement d’application. Cette solution a résolu un problème spécifique pour une équipe d’application.

L’une des méthodes pour que les scripts de déploiement soient plus adaptables est de fournir des données au script. Vous avez deux options : des arguments de ligne de commande et des variables d’environnement.

Notes

Les commandes de cette unité sont présentées pour illustrer les concepts. N’exécutez pas encore les commandes. Vous allez bientôt mettre en pratique ce que vous apprenez ici.

Utiliser des arguments de ligne de commande

La première option pour passer des données dans les ressources deploymentScripts est de personnaliser la propriété arguments. La propriété arguments prend une chaîne d’arguments, comme ceux que vous fournissez sur la ligne de commande. Ces arguments sont fournis à la command propriété de l’instance de conteneur Azure qui exécute le script.

Notes

Dans la mesure où des analyses se produisent, vous devez tester des variantes de votre propriété arguments. La valeur de propriété est divisée en un tableau de chaînes de la même façon que l’interpréteur de commandes Windows analyse les lignes de commande.

"properties": {
   "arguments": "-Name Learner",
   "azPowerShellVersion": "3.0",
   "scriptContent": "
       param ([string]$Name)
       $output = \"Hello $Name!\"
       Write-Output $output
       $DeploymentScriptOutputs = @{}
       $DeploymentScriptOutputs['text'] = $output
   ",
   "retentionInterval":"P1D"
}
properties: {
  arguments: '-Name Learner'
  azPowerShellVersion: '3.0'
  scriptContent: '''
    param ([string]$Name)
    $output = "Hello $Name!"
    Write-Output $output
    $DeploymentScriptOutputs = @{}
    $DeploymentScriptOutputs['text'] = $output
  '''
  retentionInterval: 'P1D'
}

Utilisation de variables d’environnement

Votre deuxième option est de créer des variables d’environnement accessibles par vos scripts.

"properties": {
   "arguments": "-Name Learner",
   "environmentVariables:": [
       {
         "name": "Subject",
         "value": "Deployment Scripts"
       }
   ],
   "azPowerShellVersion": "3.0",
   "scriptContent": "
       param ([string]$Name)
       $output = \"Hello $Name!\"
       $output += \"Learning about $env:Subject can be very helpful in your deployments.\"
       Write-Output $output
       $DeploymentScriptOutputs = @{}
       $DeploymentScriptOutputs['text'] = $output
   ",
   "retentionInterval":"P1D"
}
properties: {
  arguments: '-Name Learner'
  environmentVariables: [
    {
      name: 'Subject'
      value: 'Deployment Scripts'
    }
  ]
  azPowerShellVersion: '3.0'
  scriptContent: '''
    param ([string]$Name)
    $output = "Hello $Name!"
    $output += "Learning about $env:Subject can be very helpful in your deployments."
    Write-Output $output
    $DeploymentScriptOutputs = @{}
    $DeploymentScriptOutputs['text'] = $output
  '''
  retentionInterval: 'P1D'
}

Les variables d’environnement présentent entre autres l’avantage que vous pouvez utiliser l’option secureValue pour les secrets que vous devez transmettre aux scripts de déploiement.

"properties": {
   "arguments": "-Name Learner",
   "environmentVariables:": [
       {
         "name": "Subject",
         "value": "Deployment Scripts"
       },
       {
         "name": "MySecretValue",
         "secureValue": "PleaseDoNotPrintMeToTheConsole!"
       }
   ],
   "azPowerShellVersion": "3.0",
   "scriptContent": "
       param ([string]$Name)
       $output = \"Hello $Name!\"
       $output += \"Learning about $env:Subject can be very helpful in your deployments.\"
       $output += \"Secure environment variables (like $env:MySecretValue) are only secure if you keep them that way.\"
       Write-Output $output
       $DeploymentScriptOutputs = @{}
       $DeploymentScriptOutputs['text'] = $output
   ",
   "retentionInterval":"P1D"
}
properties: {
  arguments: '-Name Learner'
  environmentVariables: [
    {
      name: 'Subject'
      value: 'Deployment Scripts'
    }
    {
      name: 'MySecretValue'
      secureValue: 'PleaseDoNotPrintMeToTheConsole!'
    }
  ]
  azPowerShellVersion: '3.0'
  scriptContent: '''
    param ([string]$Name)
    $output = "Hello $Name!"
    $output += "Learning about $env:Subject can be very helpful in your deployments."
    $output += "Secure environment variables (like $env:MySecretValue) are only secure if you keep them that way."
    Write-Output $output
    $DeploymentScriptOutputs = @{}
    $DeploymentScriptOutputs['text'] = $output
  '''
  retentionInterval: 'P1D'
}

Passer des paramètres

Comme vous l’avez appris, vous pouvez définir des valeurs de paramètre directement dans les propriétés du script de déploiement. Il existe plusieurs autres options pour passer des valeurs. Vous pouvez utiliser des valeurs dynamiques de ressources créées précédemment, des variables déclarées dans le modèle ou des paramètres passés directement au modèle au moment du déploiement.

Ces scénarios sont disponibles à travers des fonctions de modèle dans la propriété arguments ou environmentVariables. Vous pouvez utiliser n’importe quelle fonction de modèle ARM pour accéder aux valeurs et les passer au modèle. Ces fonctions sont notamment reference, parameters ou variables.

Ces scénarios sont disponibles à travers des fonctions de modèle dans la propriété arguments ou environmentVariables. Vous pouvez utiliser l’une des fonctionnalités Bicep pour accéder aux valeurs et les transmettre au modèle. Par exemple, vous pouvez faire référence aux propriétés d’autres ressources à l’aide de leurs noms symboliques et faire référence à des paramètres et variables.