Megosztás a következőn keresztül:


Fejlesztési környezet konfigurálása üzembehelyezési szkriptekhez Bicep-fájlokban

Megtudhatja, hogyan hozhat létre fejlesztési környezetet üzembehelyezési szkriptek fejlesztéséhez és teszteléséhez üzembehelyezési szkriptek rendszerképével. Létrehozhat egy Azure-tárolópéldányt, vagy használhatja a Dockert. Ez a cikk mindkét lehetőséget ismerteti.

Előfeltételek

Azure PowerShell-tároló

Ha nem rendelkezik Azure PowerShell-telepítési szkripttel, a következő tartalommal hozhat létre hello.ps1 fájlt:

param([string] $name)
$output = 'Hello {0}' -f $name
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['text'] = $output
param([string] $name, [string] $subscription)
$output = 'Hello {0}' -f $name
#Write-Output $output

Connect-AzAccount -UseDeviceAuthentication
Set-AzContext -subscription $subscription

$kv = Get-AzKeyVault
#Write-Output $kv

$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['greeting'] = $output
$DeploymentScriptOutputs['kv'] = $kv.resourceId
Write-Output $DeploymentScriptOutputs

Egy Azure PowerShell-alapú üzembehelyezési szkriptben a változó $DeploymentScriptOutputs a kimeneti értékek tárolására szolgál. Az Azure PowerShell-kimenetek használatával kapcsolatos további információkért lásd : Kimenetek használata.

Azure CLI-tároló

Azure CLI-tárolórendszerképekhez az alábbi tartalommal hozhat létre hello.sh fájlt:

FIRSTNAME=$1
LASTNAME=$2
OUTPUT="{\"name\":{\"displayName\":\"$FIRSTNAME $LASTNAME\",\"firstName\":\"$FIRSTNAME\",\"lastName\":\"$LASTNAME\"}}"
echo -n "Hello "
echo $OUTPUT | jq -r '.name.displayName'

Az Azure CLI üzembehelyezési szkriptjében egy úgynevezett AZ_SCRIPTS_OUTPUT_PATH környezeti változó tárolja a szkript kimeneti fájljának helyét. A környezeti változó nem érhető el a fejlesztői környezet tárolójában. Az Azure CLI-kimenetek használatával kapcsolatos további információkért lásd : Cli-szkriptek kimeneteinek használata.

Az Azure PowerShell-tárolópéldány használata

Ha Azure PowerShell-szkripteket szeretne létrehozni a számítógépen, létre kell hoznia egy tárfiókot, és csatlakoztatnia kell a tárfiókot a tárolópéldányhoz. Így feltöltheti a szkriptet a tárfiókba, és futtathatja a szkriptet a tárolópéldányon. A szkript teszteléséhez létrehozott tárfiók nem ugyanaz a tárfiók, amelyet az üzembehelyezési szkriptszolgáltatás a szkript végrehajtásához használ. Az üzembehelyezési szkriptszolgáltatás minden végrehajtáskor létrehoz egy egyedi nevet fájlmegosztásként.

Azure PowerShell-tárolópéldány létrehozása

A következő Bicep-fájl létrehoz egy tárolópéldányt és egy fájlmegosztást, majd csatlakoztatja a fájlmegosztást a tárolólemezképhez.

@description('Specify a project name that is used for generating resource names.')
param projectName string

@description('Specify the resource location.')
param location string = resourceGroup().location

@description('Specify the container image.')
param containerImage string = 'mcr.microsoft.com/azuredeploymentscripts-powershell:az9.7'

@description('Specify the mount path.')
param mountPath string = '/mnt/azscripts/azscriptinput'

var storageAccountName = toLower('${projectName}store')
var fileShareName = '${projectName}share'
var containerGroupName = '${projectName}cg'
var containerName = '${projectName}container'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

resource fileShare 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01' = {
  name: '${storageAccountName}/default/${fileShareName}'
  dependsOn: [
    storageAccount
  ]
}

resource containerGroup 'Microsoft.ContainerInstance/containerGroups@2023-05-01' = {
  name: containerGroupName
  location: location
  properties: {
    containers: [
      {
        name: containerName
        properties: {
          image: containerImage
          resources: {
            requests: {
              cpu: 1
              memoryInGB: json('1.5')
            }
          }
          ports: [
            {
              protocol: 'TCP'
              port: 80
            }
          ]
          volumeMounts: [
            {
              name: 'filesharevolume'
              mountPath: mountPath
            }
          ]
          command: [
            '/bin/sh'
            '-c'
            'pwsh -c \'Start-Sleep -Seconds 1800\''
          ]
        }
      }
    ]
    osType: 'Linux'
    volumes: [
      {
        name: 'filesharevolume'
        azureFile: {
          readOnly: false
          shareName: fileShareName
          storageAccountName: storageAccountName
          storageAccountKey: storageAccount.listKeys().keys[0].value
        }
      }
    ]
  }
}

A csatlakoztatási útvonal alapértelmezett értéke a /mnt/azscripts/azscriptinputkövetkező. Ez az az elérési út a tárolópéldányban, ahol a fájlmegosztáshoz van csatlakoztatva.

A Bicep-fájlban megadott alapértelmezett tárolórendszerkép a mcr.microsoft.com/azuredeploymentscripts-powershell:az9.7. Tekintse meg a támogatott Azure PowerShell-verziók listáját.

A Bicep-fájl 1800 másodperc után felfüggeszti a tárolópéldányt. 30 perce van, mielőtt a tárolópéldány leállított állapotba kerül, és a munkamenet véget ér.

A Bicep-fájl üzembe helyezéséhez használja a következő szkriptet:

$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$templateFile = Read-Host -Prompt "Enter the Bicep file path and file name"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroup -Location $location -name $resourceGroupName
New-AzResourceGroupDeployment -resourceGroupName $resourceGroupName -TemplateFile $templatefile -projectName $projectName

Az üzembehelyezési szkript feltöltése

Töltse fel az üzembehelyezési szkriptet a tárfiókba. Íme egy példa Egy PowerShell-szkriptre:

$projectName = Read-Host -Prompt "Enter the same project name that you used earlier"
$fileName = Read-Host -Prompt "Enter the deployment script file name with the path"

$resourceGroupName = "${projectName}rg"
$storageAccountName = "${projectName}store"
$fileShareName = "${projectName}share"

$context = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName).Context
Set-AzStorageFileContent -Context $context -ShareName $fileShareName -Source $fileName -Force

A fájlt az Azure Portalon vagy az Azure CLI-vel is feltöltheti.

Az üzembehelyezési szkript tesztelése

  1. Az Azure Portalon nyissa meg azt az erőforráscsoportot, amelyben üzembe helyezte a tárolópéldányt és a tárfiókot.

  2. Nyissa meg a tárolócsoportot. Az alapértelmezett tárolócsoportnév a cg-vel kiegészített projektnév. A tárolópéldány futó állapotban van.

  3. Az erőforrásmenüben válassza a Tárolók lehetőséget. A tárolópéldány neve a tárolóval összefűzött projektnév.

    Képernyőkép az Üzembehelyezési szkript csatlakoztatása tárolópéldány beállításáról az Azure Portalon.

  4. Válassza a Csatlakozás, majd a Csatlakozás lehetőséget. Ha nem tud csatlakozni a tárolópéldányhoz, indítsa újra a tárolócsoportot, és próbálkozzon újra.

  5. A konzolpanelen futtassa a következő parancsokat:

    cd /mnt/azscripts/azscriptinput
    ls
    pwsh ./hello.ps1 "John Dole"
    

    A kimenet Hello John Dole.

    Képernyőkép a konzolon megjelenő üzembehelyezési szkript csatlakoztatási tárolópéldány tesztkimenetéről.

Azure CLI-tárolópéldány használata

Ha Azure CLI-szkripteket szeretne létrehozni a számítógépen, hozzon létre egy tárfiókot, és csatlakoztassa a tárfiókot a tárolópéldányhoz. Ezután feltöltheti a szkriptet a tárfiókba, és futtathatja a szkriptet a tárolópéldányon. A szkript teszteléséhez létrehozott tárfiók nem ugyanaz a tárfiók, amelyet az üzembehelyezési szkriptszolgáltatás a szkript végrehajtásához használ. Az üzembehelyezési szkriptszolgáltatás minden végrehajtáskor egyedi nevet hoz létre fájlmegosztásként.

Azure CLI-tárolópéldány létrehozása

A következő Bicep-fájl létrehoz egy tárolópéldányt és egy fájlmegosztást, majd csatlakoztatja a fájlmegosztást a tárolólemezképhez:

@description('Specify a project name that is used for generating resource names.')
param projectName string

@description('Specify the resource location.')
param location string = resourceGroup().location

@description('Specify the container image.')
param containerImage string = 'mcr.microsoft.com/azure-cli:2.9.1'

@description('Specify the mount path.')
param mountPath string = '/mnt/azscripts/azscriptinput'

var storageAccountName = toLower('${projectName}store')
var fileShareName = '${projectName}share'
var containerGroupName = '${projectName}cg'
var containerName = '${projectName}container'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

resource fileshare 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01' = {
  name: '${storageAccountName}/default/${fileShareName}'
  dependsOn: [
    storageAccount
  ]
}

resource containerGroup 'Microsoft.ContainerInstance/containerGroups@2023-05-01' = {
  name: containerGroupName
  location: location
  properties: {
    containers: [
      {
        name: containerName
        properties: {
          image: containerImage
          resources: {
            requests: {
              cpu: 1
              memoryInGB: json('1.5')
            }
          }
          ports: [
            {
              protocol: 'TCP'
              port: 80
            }
          ]
          volumeMounts: [
            {
              name: 'filesharevolume'
              mountPath: mountPath
            }
          ]
          command: [
            '/bin/bash'
            '-c'
            'echo hello; sleep 1800'
          ]
        }
      }
    ]
    osType: 'Linux'
    volumes: [
      {
        name: 'filesharevolume'
        azureFile: {
          readOnly: false
          shareName: fileShareName
          storageAccountName: storageAccountName
          storageAccountKey: storageAccount.listKeys().keys[0].value
        }
      }
    ]
  }
}

A csatlakoztatási útvonal alapértelmezett értéke a /mnt/azscripts/azscriptinputkövetkező. Ez az az elérési út a tárolópéldányban, ahol a fájlmegosztáshoz van csatlakoztatva.

A Bicep-fájlban megadott alapértelmezett tárolórendszerkép mcr.microsoft.com/azure-cli:2.9.1. Tekintse meg a támogatott Azure CLI-verziók listáját. Az üzembehelyezési szkript a Microsoft Container Registry (MCR) elérhető CLI-rendszerképeit használja. A parancssori felület rendszerképének hitelesítése egy üzembehelyezési szkripthez körülbelül egy hónapig tart. Ne használja a 30 napon belül kiadott CLI-verziókat. A rendszerképek kiadási dátumait az Azure CLI kibocsátási megjegyzéseiben találja. Ha nem támogatott verziót használ, a hibaüzenet felsorolja a támogatott verziókat.

A Bicep-fájl 1800 másodperc után felfüggeszti a tárolópéldányt. 30 perce van, mielőtt a tárolópéldány terminálállapotba kerül, és a munkamenet véget ér.

A Bicep-fájl üzembe helyezése:

$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$templateFile = Read-Host -Prompt "Enter the Bicep file path and file name"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroup -Location $location -name $resourceGroupName
New-AzResourceGroupDeployment -resourceGroupName $resourceGroupName -TemplateFile $templatefile -projectName $projectName

Az üzembehelyezési szkript feltöltése

Töltse fel az üzembehelyezési szkriptet a tárfiókba. Az alábbiakban egy PowerShell-példát mutatunk be:

$projectName = Read-Host -Prompt "Enter the same project name that you used earlier"
$fileName = Read-Host -Prompt "Enter the deployment script file name with the path"

$resourceGroupName = "${projectName}rg"
$storageAccountName = "${projectName}store"
$fileShareName = "${projectName}share"

$context = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName).Context
Set-AzStorageFileContent -Context $context -ShareName $fileShareName -Source $fileName -Force

A fájlt az Azure Portalon vagy az Azure CLI-vel is feltöltheti.

Az üzembehelyezési szkript tesztelése

  1. Az Azure Portalon nyissa meg azt az erőforráscsoportot, amelyben üzembe helyezte a tárolópéldányt és a tárfiókot.

  2. Nyissa meg a tárolócsoportot. Az alapértelmezett tárolócsoportnév a cg-vel kiegészített projektnév. A tárolópéldány futó állapotban jelenik meg.

  3. Az erőforrásmenüben válassza a Tárolók lehetőséget. A tárolópéldány neve a tárolóval összefűzött projektnév.

    Képernyőkép az Üzembehelyezési szkript csatlakoztatása tárolópéldány beállításáról az Azure Portalon.

  4. Válassza a Csatlakozás, majd a Csatlakozás lehetőséget. Ha nem tud csatlakozni a tárolópéldányhoz, indítsa újra a tárolócsoportot, és próbálkozzon újra.

  5. A konzolpanelen futtassa a következő parancsokat:

    cd /mnt/azscripts/azscriptinput
    ls
    ./hello.sh John Dole
    

    A kimenet Hello John Dole.

    Képernyőkép a konzolon megjelenő üzembehelyezési szkript tárolópéldányának tesztkimenetéről.

A Docker használata

Egy előre konfigurált Docker-tárolórendszerképet használhat üzembehelyezési szkriptfejlesztési környezetként. A Docker telepítéséhez lásd a Docker lekérése című témakört. A fájlmegosztást is konfigurálnia kell a címtár csatlakoztatásához, amely az üzembehelyezési szkripteket tartalmazza a Docker-tárolóba.

  1. Kérje le az üzembehelyezési szkript tárolójának lemezképét a helyi számítógépre:

    docker pull mcr.microsoft.com/azuredeploymentscripts-powershell:az10.0
    

    A példa a PowerShell 4.3.0-s verzióját használja.

    CLI-rendszerkép lekérése mcr-ről:

    docker pull mcr.microsoft.com/azure-cli:2.52.0
    

    Ez a példa a CLI 2.52.0-s verzióját használja. Az üzembehelyezési szkript az alapértelmezett CLI-tárolók lemezképét használja.

  2. Futtassa helyileg a Docker-lemezképet.

    docker run -v <host drive letter>:/<host directory name>:/data -it mcr.microsoft.com/azuredeploymentscripts-powershell:az10.0
    

    Cserélje le a gazdagép illesztőprogramjának betűjelét> és <a gazdagépkönyvtár nevét> egy meglévő mappára a megosztott meghajtón.< Leképozza a mappát a tároló /data mappájába. Például a D:\docker leképezéséhez:

    docker run -v d:/docker:/data -it mcr.microsoft.com/azuredeploymentscripts-powershell:az10.0
    

    -ez azt jelenti, hogy életben tartja a tárolórendszerképet.

    Egy cli-példa:

    docker run -v d:/docker:/data -it mcr.microsoft.com/azure-cli:2.52.0
    
  3. Az alábbi képernyőkép bemutatja, hogyan futtathat PowerShell-szkriptet, mivel a megosztott meghajtón van egy helloworld.ps1 fájl.

    Képernyőkép a Resource Manager-sablon üzembehelyezési parancsfájlról a Docker paranccsal.

A szkript sikeres tesztelése után üzembehelyezési szkriptként használhatja a Bicep-fájlokban.

Következő lépések

Ebben a cikkben megtanulta, hogyan hozhat létre szkriptfejlesztési környezeteket. További tudnivalók: