Parametryzowanie skryptów wdrażania

Ukończone

W poprzedniej lekcji dodano pewne zachowanie niestandardowe do szablonu usługi Azure Resource Manager (ARM) w celu przygotowania zawartości początkowej na koncie magazynu dla nowego środowiska aplikacji. Rozwiązało to konkretny problem dla jednego zespołu aplikacji.

Jednym ze sposobów zwiększenia możliwości dostosowania skryptów wdrażania jest dostarczenie danych do skryptu. Dostępne są dwie opcje, argumenty wiersza polecenia i zmienne środowiskowe.

Uwaga

Polecenia w tej lekcji są wyświetlane w celu zilustrowania pojęć. Nie uruchamiaj jeszcze poleceń. Będziesz ćwiczyć to, czego nauczysz się tutaj wkrótce.

Używanie argumentów wiersza polecenia

Pierwszą opcją przekazywania danych do deploymentScripts zasobów jest dostosowanie arguments właściwości. Właściwość arguments przyjmuje ciąg argumentów, podobnie jak te, które należy podać w wierszu polecenia. Te argumenty są dostarczane do command właściwości wystąpienia kontenera platformy Azure, które uruchomi skrypt.

Uwaga

Niektóre analizy występują, więc przetestuj niektóre odmiany właściwości arguments . Zostanie ona podzielona na tablicę ciągów w taki sam sposób, w jaki powłoka systemu Windows analizuje wiersze polecenia.

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

Korzystanie ze zmiennych środowiskowych

Drugą opcją jest utworzenie zmiennych środowiskowych, do których skrypty mogą uzyskiwać dostęp.

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

Jedną z zalet używania zmiennych środowiskowych jest możliwość użycia secureValue opcji dla wpisów tajnych, które mogą wymagać przekazania do skryptów wdrażania.

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

Przekazywanie parametrów

Jak już wiesz, możesz ustawić wartości parametrów bezpośrednio we właściwościach skryptu wdrażania. Istnieje kilka innych opcji dla wartości, które można przekazać. Możesz użyć wartości dynamicznych pochodzących z wcześniej utworzonych zasobów, zmiennych zadeklarowanych w szablonie lub parametrów przekazywanych bezpośrednio do szablonu w czasie wdrażania.

Te scenariusze są dostępne za pośrednictwem funkcji szablonu arguments we właściwości lub environmentVariables . Aby uzyskać dostęp do wartości i przekazać je do szablonu, możesz użyć dowolnej funkcji szablonu usługi ARM. Te funkcje obejmują reference, parameterslub variables.

Te scenariusze są dostępne za pośrednictwem funkcji szablonu arguments we właściwości lub environmentVariables . Do uzyskiwania dostępu do wartości i przekazywania ich do szablonu można użyć dowolnych funkcji Bicep, takich jak odwoływanie się do właściwości z innych zasobów przy użyciu ich nazw symbolicznych i odwoływanie się do parametrów i zmiennych.