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/azscriptinput
kö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
Az Azure Portalon nyissa meg azt az erőforráscsoportot, amelyben üzembe helyezte a tárolópéldányt és a tárfiókot.
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.
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.
Válassza a Csatlakozás lehetőséget, 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.
A konzolpanelen futtassa a következő parancsokat:
cd /mnt/azscripts/azscriptinput ls pwsh ./hello.ps1 "John Dole"
A kimenet Hello John Dole.
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-04-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
resource fileshare 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-04-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/azscriptinput
kö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. A következő szkript egy PowerShell-példa:
$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
Az Azure Portalon nyissa meg azt az erőforráscsoportot, amelyben üzembe helyezte a tárolópéldányt és a tárfiókot.
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.
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.
Válassza a Csatlakozás lehetőséget, 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.
A konzolpanelen futtassa a következő parancsokat:
cd /mnt/azscripts/azscriptinput ls ./hello.sh John Dole
A kimenet Hello John Dole.
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.
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.
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
Az alábbi képernyőkép bemutatja, hogyan futtathat PowerShell-szkriptet, mivel a megosztott meghajtón van egy helloworld.ps1 fájl.
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: