Parametrizace skriptů nasazení

Dokončeno

V předchozí lekci jste do šablony Azure Resource Manageru (ARM) přidali nějaké vlastní chování, které připraví počáteční obsah v účtu úložiště pro nové aplikační prostředí. Tento problém se vyřešil u jednoho aplikačního týmu.

Jedním ze způsobů, jak lépe přizpůsobit skripty nasazení, je poskytnout skriptům data. Máte dvě možnosti: argumenty příkazového řádku a proměnné prostředí.

Poznámka:

Příkazy v této lekci jsou znázorněny pro ilustraci konceptů. Zatím nespouštět příkazy. Brzy si procvičíte, co se tady naučíte.

Použití argumentů příkazového řádku

První možností pro předávání dat do deploymentScripts prostředků je přizpůsobení arguments vlastnosti. Vlastnost arguments přebírá řetězec argumentů stejně jako argumenty, které zadáte na příkazovém řádku. Tyto argumenty se zadají do command vlastnosti instance kontejneru Azure, která skript spustí.

Poznámka:

K analýze dojde, takže otestujte některé varianty vlastnosti arguments . Rozdělí se do pole řetězců stejným způsobem, jakým prostředí Windows parsuje příkazové řádky.

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

Použití proměnných prostředí

Druhou možností je vytvořit proměnné prostředí, ke kterým mají vaše skripty přístup.

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

Jednou z výhod použití proměnných prostředí je, že můžete použít secureValue možnost pro tajné kódy, které mohou být potřeba předat do skriptů nasazení.

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

Předávání parametrů

Jak jste se dozvěděli, můžete hodnoty parametrů nastavit přímo ve vlastnostech skriptu nasazení. Existuje několik dalších možností pro hodnoty, které je možné předat. Můžete použít dynamické hodnoty pocházející z dříve vytvořených prostředků, proměnných deklarovaných v šabloně nebo parametrů předaných přímo do šablony v době nasazení.

Tyto scénáře jsou k dispozici prostřednictvím funkcí šablony v objektu arguments nebo environmentVariables vlastnosti. K přístupu k hodnotám a jejich předání do šablony můžete použít některou z funkcí šablony ARM. Mezi tyto funkce patří reference, parametersnebo variables.

Tyto scénáře jsou k dispozici prostřednictvím funkcí šablony v objektu arguments nebo environmentVariables vlastnosti. Pomocí libovolné funkce Bicep můžete získat přístup k hodnotám a předat je šabloně, například odkazovat na vlastnosti z jiných prostředků pomocí jejich symbolických názvů a odkazovat na parametry a proměnné.