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. Cela a permis de résoudre 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 propriété command 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. Elle est décomposé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 passer au modèle, par exemple, référencer des propriétés d’autres ressources en utilisant leur nom symbolique et référencer des paramètres et des variables.