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. To rozwiązanie rozwiązało 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 właściwości kontenera platformy Azure, który uruchamia skrypt.

Uwaga

Niektóre analizy występują, więc przetestuj niektóre odmiany właściwości arguments . Wartość właściwości jest podzielona na tablicę ciągów w taki sam sposób, jak 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żna 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 . Aby uzyskać dostęp do wartości i przekazać je do szablonu, możesz użyć dowolnych funkcji Bicep. Na przykład można odwoływać się do właściwości z innych zasobów przy użyciu ich nazw symbolicznych i odwoływać się do parametrów i zmiennych.