Mengonfigurasi lingkungan pengembangan untuk skrip penyebaran dalam file Bicep
Pelajari cara membuat lingkungan pengembangan untuk mengembangkan dan menguji skrip penyebaran dengan gambar skrip penyebaran. Anda dapat membuat instans kontainer Azure atau menggunakan Docker. Kedua opsi tersebut dibahas dalam artikel ini.
Prasyarat
Kontainer Azure PowerShell
Jika Anda tidak memiliki skrip penerapan Azure PowerShell, Anda bisa membuat hello.ps1 dengan menggunakan konten berikut:
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
Dalam skrip penyebaran Azure PowerShell, variabel $DeploymentScriptOutputs
digunakan untuk menyimpan nilai output. Untuk informasi selengkapnya tentang bekerja dengan output Azure PowerShell, lihat Bekerja dengan output.
Kontainer Azure CLI
Untuk gambar kontainer Azure CLI, Anda bisa membuat file hello.sh dengan menggunakan konten berikut:
FIRSTNAME=$1
LASTNAME=$2
OUTPUT="{\"name\":{\"displayName\":\"$FIRSTNAME $LASTNAME\",\"firstName\":\"$FIRSTNAME\",\"lastName\":\"$LASTNAME\"}}"
echo -n "Hello "
echo $OUTPUT | jq -r '.name.displayName'
Dalam skrip penyebaran Azure CLI, variabel lingkungan yang disebut AZ_SCRIPTS_OUTPUT_PATH
menyimpan lokasi file output skrip. Variabel lingkungan tidak tersedia dalam kontainer lingkungan pengembangan. Untuk informasi selengkapnya tentang bekerja dengan output Azure CLI, lihat Bekerja dengan output dari skrip CLI.
Menggunakan instans kontainer Azure PowerShell
Untuk menulis skrip Azure PowerShell di komputer, Anda perlu membuat akun penyimpanan dan memasang akun penyimpanan ke instans kontainer. Sehingga Anda dapat mengunggah skrip Anda ke akun penyimpanan dan menjalankan skrip pada instans kontainer. Akun penyimpanan yang Anda buat untuk menguji skrip Anda bukanlah akun penyimpanan yang sama dengan yang digunakan layanan skrip penyebaran untuk menjalankan skrip. Layanan skrip penyebaran membuat nama unik sebagai berbagi pada setiap eksekusi.
Membuat instans kontainer Azure PowerShell
File Bicep berikut membuat instans kontainer dan berbagi file, lalu memasang berbagi file ke gambar kontainer.
@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
}
}
]
}
}
Nilai default untuk jalur pemasangan adalah /mnt/azscripts/azscriptinput
. Ini adalah jalur dalam instans kontainer tempat instans dipasang ke berbagi.
Gambar kontainer default yang ditentukan dalam file Bicep mcr.microsoft.com/azuredeploymentscripts-powershell:az9.7. Lihat daftar semua versi Azure PowerShell yang didukung.
File Bicep menangguhkan instans kontainer setelah 1.800 detik. Anda memiliki 30 menit sebelum instans kontainer masuk ke keadaan dihentikan dan sesi berakhir.
Gunakan skrip berikut untuk menyebarkan file Bicep:
$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
Unggah skrip penyebaran
Unggah skrip penyebaran Anda ke akun penyimpanan. Berikut adalah contoh skrip PowerShell:
$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
Anda juga dapat mengunggah file dengan menggunakan portal Azure atau Azure CLI.
Menguji skrip penyebaran
Di portal Microsoft Azure, buka grup sumber daya tempat Anda menggunakan instans kontainer dan akun penyimpanan.
Buka grup kontainer. Nama grup kontainer default adalah nama proyek yang ditambahkan dengan cg. Instans kontainer dalam status Berjalan.
Di menu sumber daya, pilih Kontainer. Nama instans kontainer adalah nama proyek yang ditambahkan dengan kontainer.
Pilih Sambungkan, lalu pilih Sambungkan. Jika Anda tidak dapat terhubung ke instans kontainer, mulai ulang grup kontainer dan coba lagi.
Di panel konsol, jalankan perintah berikut:
cd /mnt/azscripts/azscriptinput ls pwsh ./hello.ps1 "John Dole"
Outputnya adalah Halo John Dole.
Menggunakan instans kontainer Azure CLI
Untuk menulis skrip Azure CLI di komputer Anda, buat akun penyimpanan dan pasang akun penyimpanan ke instans kontainer. Sehingga Anda dapat mengunggah skrip Anda ke akun penyimpanan dan menjalankan skrip pada instans kontainer. Akun penyimpanan yang Anda buat untuk menguji skrip Anda bukanlah akun penyimpanan yang sama dengan yang digunakan layanan skrip penyebaran untuk menjalankan skrip. Layanan skrip penyebaran membuat nama unik sebagai berbagi pada setiap eksekusi.
Menggunakan instans kontainer Azure CLI
File Bicep berikut membuat instans kontainer dan berbagi file, lalu memasang berbagi file ke gambar kontainer:
@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
}
}
]
}
}
Nilai default untuk jalur pemasangan adalah /mnt/azscripts/azscriptinput
. Ini adalah jalur dalam instans kontainer tempat instans dipasang ke berbagi.
Gambar kontainer default yang ditentukan dalam file Bicep adalah mcr.microsoft.com/azure-cli:2.9.1. Lihat daftar versi Azure CLI yang didukung. Skrip penyebaran menggunakan gambar CLI yang tersedia dari Microsoft Container Registry (MCR). Dibutuhkan sekitar satu bulan untuk mensertifikasi gambar CLI untuk skrip penyebaran. Jangan gunakan versi CLI yang dirilis dalam waktu 30 hari. Untuk menemukan tanggal rilis untuk gambar, lihat Catatan rilis Azure CLI. Jika Anda menggunakan versi yang tidak didukung, pesan kesalahan mencantumkan versi yang didukung.
File Bicep menangguhkan instans kontainer setelah 1.800 detik. Anda memiliki 30 menit sebelum instans kontainer masuk ke status terminal dan sesi berakhir.
Untuk menyebarkan file Bicep:
$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
Unggah skrip penyebaran
Unggah skrip penyebaran Anda ke akun penyimpanan. Skrip berikut adalah contoh PowerShell:
$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
Anda juga dapat mengunggah file dengan menggunakan portal Microsoft Azure atau Azure CLI.
Menguji skrip penyebaran
Di portal Microsoft Azure, buka grup sumber daya tempat Anda menggunakan instans kontainer dan akun penyimpanan.
Buka grup kontainer. Nama grup kontainer default adalah nama proyek yang ditambahkan dengan cg. Instans kontainer ditampilkan dalam status Berjalan.
Di menu sumber daya, pilih Kontainer. Nama instans kontainer adalah nama proyek yang ditambahkan dengan kontainer.
Pilih Sambungkan, lalu pilih Sambungkan. Jika Anda tidak dapat terhubung ke instans kontainer, mulai ulang grup kontainer dan coba lagi.
Di panel konsol, jalankan perintah berikut:
cd /mnt/azscripts/azscriptinput ls ./hello.sh John Dole
Outputnya adalah Halo John Dole.
Menggunakan Docker
Anda dapat menggunakan gambar kontainer Docker yang telah dikonfigurasi sebelumnya sebagai lingkungan pengembangan skrip penyebaran Anda. Untuk memasang Docker, lihat Dapatkan Docker. Anda juga perlu mengonfigurasi berbagi untuk memasang direktori, yang berisi skrip penyebaran ke dalam kontainer Docker.
Tarik gambar kontainer skrip penyebaran ke komputer lokal:
docker pull mcr.microsoft.com/azuredeploymentscripts-powershell:az10.0
Contoh tersebut menggunakan versi PowerShell 4.3.0.
Untuk menarik gambar CLI dari MCR:
docker pull mcr.microsoft.com/azure-cli:2.52.0
Contoh ini menggunakan versi CLI 2.52.0. Skrip penyebaran menggunakan gambar kontainer CLI default.
Jalankan gambar Docker secara lokal.
docker run -v <host drive letter>:/<host directory name>:/data -it mcr.microsoft.com/azuredeploymentscripts-powershell:az10.0
Ganti <huruf kandar host> dan <nama direktori host> dengan folder yang ada di drive bersama. Ini memetakan folder ke folder /data dalam kontainer. Misalnya, untuk memetakan D:\docker:
docker run -v d:/docker:/data -it mcr.microsoft.com/azuredeploymentscripts-powershell:az10.0
-it berarti menjaga gambar kontainer tetap hidup.
Contoh CLI:
docker run -v d:/docker:/data -it mcr.microsoft.com/azure-cli:2.52.0
Cuplikan layar berikut menunjukkan cara menjalankan skrip PowerShell, mengingat Anda memiliki file helloworld.ps1 di drive bersama.
Setelah skrip berhasil diuji, Anda dapat menggunakannya sebagai skrip penyebaran di file Bicep Anda.
Langkah berikutnya
Dalam artikel ini, Anda mempelajari cara membuat lingkungan pengembangan skrip. Untuk mempelajari selengkapnya: