Implementatiescripts parameteriseren

Voltooid

In de vorige les hebt u aangepast gedrag toegevoegd aan een ARM-sjabloon (Azure Resource Manager) om de begininhoud in een opslagaccount voor een nieuwe toepassingsomgeving te faseereren. Hiermee is een specifiek probleem opgelost voor één toepassingsteam.

Een manier om implementatiescripts beter aanpasbaar te maken, is door gegevens aan het script te verstrekken. U hebt twee opties, opdrachtregelargumenten en omgevingsvariabelen.

Notitie

De opdrachten in deze les worden weergegeven om concepten te illustreren. Voer de opdrachten nog niet uit. U oefent wat u hier binnenkort leert.

Opdrachtregelargumenten gebruiken

De eerste optie voor het doorgeven van gegevens aan de deploymentScripts resources is het aanpassen van de arguments eigenschap. De arguments eigenschap gebruikt een reeks argumenten, net zoals de argumenten die u opgeeft op de opdrachtregel. Deze argumenten worden verstrekt aan de command eigenschap van de Azure-containerinstantie waarmee het script wordt uitgevoerd.

Notitie

Er wordt wat parseren uitgevoerd, dus test enkele variaties van uw arguments eigenschap. Deze wordt onderverdeeld in een matrix met tekenreeksen op dezelfde manier als de Windows-shell opdrachtregels parseert.

"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'
}

Omgevingsvariabelen gebruiken

De tweede optie is het maken van omgevingsvariabelen waartoe uw scripts toegang hebben.

"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'
}

Een voordeel van het gebruik van omgevingsvariabelen is dat u de secureValue optie kunt gebruiken voor geheimen die mogelijk moeten worden doorgegeven aan implementatiescripts.

"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'
}

Doorgegeven parameters

Zoals u hebt geleerd, kunt u parameterwaarden rechtstreeks instellen in de eigenschappen van het implementatiescript. Er zijn verschillende andere opties voor waarden die kunnen worden doorgegeven. U kunt dynamische waarden gebruiken die afkomstig zijn van eerder gemaakte resources, variabelen die in de sjabloon zijn gedeclareerd of parameters die rechtstreeks aan de sjabloon zijn doorgegeven tijdens de implementatie.

Deze scenario's zijn beschikbaar via sjabloonfuncties in de arguments of environmentVariables eigenschap. U kunt een van de ARM-sjabloonfuncties gebruiken om toegang te krijgen tot waarden en deze door te geven aan de sjabloon. Deze functies omvatten reference, parametersof variables.

Deze scenario's zijn beschikbaar via sjabloonfuncties in de arguments of environmentVariables eigenschap. U kunt een van de Bicep-functies gebruiken om toegang te krijgen tot waarden en deze door te geven aan de sjabloon, zoals verwijzen naar eigenschappen van andere resources met behulp van hun symbolische namen en verwijzen naar parameters en variabelen.