Betiklerde kullanmak üzere değişkenleri doldurma
Bu öğretici adımında değişkenlerle çalışmayı öğrenin:
- Bir Azure CLI komutu yürütür ve çıkışı bir değişkende depolar.
- Yerel bir JSON dosyasını okuyun ve özellik değerlerini bir değişkende depolayın.
Değişkenler için bazı yaygın kullanım örnekleri şunlardır:
- Kaynak kimliği gibi mevcut bir Azure kaynağı hakkında bilgi alın.
- Parola gibi bir Azure CLI komutundan çıktı alın.
- Geliştirme, aşama ve üretim kimlikleri gibi ortam bilgileri için JSON nesneleri alın.
Bu değişken daha sonra Azure CLI'da derleme ve yok etme işlerini büyük ölçekte gerçekleştirmek için kullanılabilir.
Önkoşullar
- Depolama hesabı düzeyinde veya daha yüksek izinlere sahip
reader
bir kaynak grubuna ve depolama hesabına erişiminiz vardır.
JMESPath sorgusunu kullanarak komut çıktısı alma
komutunun parametresini --query
show
kullanarak mevcut bir Azure kaynağı hakkında bilgi alın. Bir JMESPath sorgusu yürütülür ve bir Azure kaynağının bir veya daha fazla özellik değeri döndürülür.
İpucu
için --query
söz dizimi büyük/küçük harfe duyarlı ve ortama özgüdür. Boş sonuçlar alırsanız büyük/küçük harf kullanımınızı denetleyin. Bash, PowerShell ve Cmd'de Azure CLI söz dizimi farklarını öğrenme bölümünde öğrendiğiniz kuralları uygulayarak hatalardan alıntı yapmaktan kaçının
--output
Parametresi belirtilmediği sürece, bu örnekler Ortamınızı Azure CLI için hazırlama bölümünde varsayılan çıkış yapılandırmasından json
yararlanır
Azure kaynağının JSON sözlük özelliklerini alma
Bash, PowerShell ve Cmd'deki Learn Azure CLI söz dizimi farkları bölümünde oluşturulan depolama hesabını kullanarak yeni depolama hesabınızın bilgilerini alınprimaryEndpoints
.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Konsol JSON sözlüğü çıkışı:
{
"blob": "https://msdocssa00000000.blob.core.windows.net/",
"dfs": "https://msdocssa00000000.dfs.core.windows.net/",
"file": "https://msdocssa00000000.file.core.windows.net/",
"internetEndpoints": null,
"microsoftEndpoints": null,
"queue": "https://msdocssa00000000.queue.core.windows.net/",
"table": "https://msdocssa00000000.table.core.windows.net/",
"web": "https://msdocssa00000000.z13.web.core.windows.net/"
}
Tek tek JSON nesneleri alma
Bir dizideki (liste) tek tek özellikleri döndürmek için depolama hesabı özelliklerinin virgülle ayrılmış bir listesini belirtin.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
Konsol JSON dizisi çıkışı:
[
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/msdocs-tutorial-rg-00000000/providers/Microsoft.Storage/storageAccounts/ msdocssa000000000",
"eastus",
"https://msdocssa000000000.blob.core.windows.net/",
"yyyy-mm-ddT19:11:56.399484+00:00"
]
Özellikleri yeniden adlandırma
Küme ayraçlarını ({}
) ve virgülle ayrılmış listeyi kullanarak özellikleri yeniden adlandırın. Yeni özellik adları boşluk içeremez. Bu örnek, çıktıyı table
biçiminde döndürür.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Konsol tablosu çıkışı. Her sütunun ilk harfi içinde --output table
büyük harfe ayrılmıştır:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Sorgu sonuçlarını filtreleme
alıntılama hakkında öğrendiklerini hakkında öğrendiklerinizle --query
birleştirin. Bu örnekler filtre uygular.
Bash'te, eşittir (=
) işaretinden önce veya sonra boşluk olamaz. Değişken değeri çevresinde tırnak işaretleri kullanmayı tercih edebilirsiniz, bu nedenle msdocs-tutorial-rg-00000000
her "msdocs-tutorial-rg-00000000"
ikisi de doğrudur.
rgName="<msdocs-tutorial-rg-00000000>"
# Get a list of all Azure storage accounts that allow blob public access.
# Notice the backticks and escape characters needed for boolean values.
az storage account list --resource-group $rgName \
--query "[?allowBlobPublicAccess == \`true\`].name"
# Get a list of Azure storage accounts that were created in the last 30 days. Return the results as a table.
saDate=$(date +%F -d "-30days")
az storage account list --resource-group $rgName \
--query "[?creationTime >='$saDate'].{saName:name, createdTimeStamp:creationTime}" \
--output table
# Get a list of Azure storage accounts created in this tutorial
az storage account list --resource-group $rgName \
--query "[?contains(name, 'msdocs')].{saName:name, saKind:kind, saPrimaryLocation:primaryLocation, createdTimeStamp:creationTime}" \
--output table
Çıktıyı değişkende depolayarak yeni bir Azure kaynağı oluşturma
Komut çıkışını bir değişkende depolamayı öğrenmek, korunması gereken gizli dizileri veren Azure kaynakları oluştururken yararlıdır. Örneğin, bir hizmet sorumlusu oluşturduğunuzda, kimlik bilgilerini sıfırladığınızda veya azure anahtar kasası gizli dizisi aldığınızda komut çıkışı korunmalıdır.
Komut çıkışını bir değişkene döndüren yeni bir Azure Key Vault ve gizli dizi oluşturun. Azure Key Vault adınız genel olarak benzersiz olmalıdır, bu nedenle $RANDOM
tanımlayıcı bu örnekte kullanılır. Daha fazla Azure Key Vault adlandırma kuralı için bkz . Azure Key Vault için yaygın hata kodları.
Bu bir öğretim öğreticisi olduğundan, bu örnekler değişken değerlerini doğrulamak için kullanılır echo
. Üretim düzeyindeki ortamlarda gizli dizi ve parola değerleri için kullanmayın echo
.
# Set your variables.
let "randomIdentifier=$RANDOM*$RANDOM"
rgName="<msdocs-tutorial-rg-00000000>"
kvName="msdocs-kv-$randomIdentifier"
location="eastus"
# Set your default output to none
az config set core.output=none
# Create a new Azure Key Vault returning the Key Vault ID
myNewKeyVaultID=$(az keyvault create --name $kvName --resource-group $rgName --location $location --query id --output tsv)
echo "My new Azure Kev Vault ID is $myNewKeyVaultID"
# Wait about 1 minute for your Key Vault creation to complete.
# Create a new secret returning the secret ID
kvSecretName="<myKVSecretName>"
kvSecretValue="<myKVSecretValue>"
myNewSecretID=$(az keyvault secret set --vault-name $kvName --name $kvSecretName --value $kvSecretValue --query id --output tsv)
echo "My new secret ID is $myNewSecretID"
# Reset your default output to json
az config set core.output=json
JSON dosyasının içeriğini alma ve bir değişkende depolama
Bu sonraki bölümde, ekleme öğreticisi için bir "esnetme görevi" yer alır. Ancak geliştirme, aşama ve üretim ortamlarındaki Azure kaynaklarını yönetmek için genellikle bir yapılandırma dosyasını okumanız gerekir.
Azure CLI becerilerinizi genişletmeye hazır mısınız? Aşağıdaki JSON dosyasını veya istediğiniz dosya içeriğini içeren bir JSON dosyası oluşturun. Metin dosyasını yerel sürücünüze kaydedin. Azure Cloud Shell'de çalışıyorsanız, metin dosyasını bulut depolama sürücünüzde depolamak için menü çubuğundaki simgeyi kullanın upload/download files
.
{
"environments": {
"dev": [
{
"id": "1",
"kv-secretName": "dev1SecretName",
"status": "inactive",
},
{
"id": "2",
"kv-secretName": "dev2SecretName",
"status": "active"
}
],
"stg": {
"id": "3",
"kv-secretName": "dev3SecretName"
},
"prod": {
"id": "4",
"kv-secretName": "dev4SecretName"
}
}
}
Azure CLI komutlarınızda daha fazla kullanmak için JSON dosyanızın içeriğini bir değişkende depolayın. Bu örnekte, dosyanızın adına geçin msdocs-tutorial.json
. Çıktı günlük dosyanıza kaydedildiğinden echo
komutu üretim düzeyindeki betiklere kaydetmeyin.
Bu Bash betiği Azure Cloud Shell'de test edilmiştir ve ortamınızda yüklü olması gereken Bash jq'ye bağlıdır.
# Show the contents of a file in the console
fileName="msdocs-tutorial.json"
cat $fileName | jq
# Get a JSON dictionary object
stgKV=$(jq -r '.environments.stg."kv-secretName"' $fileName)
echo $stgKV
# Filter a JSON array
devKV=$(jq -r '.environments.dev[] | select(.status=="active") | ."kv-secretName"' $fileName)
echo $devKV
Az önce "jq komutu bulunamadı" hatası mı aldınız? Bunun nedeni bu betiğin Bash jq komutuna bağlı olmasıdır. Ortamınıza jq yükleyin veya bu betiği Azure Cloud Shell'de çalıştırın.
Artık bir değişkende depolanan, ortama özgü bir Azure Key Vault gizli dizi adınız var ve bunu Kullanarak Azure kaynaklarına bağlanabilirsiniz. Bu yöntem, Azure CLI betiklerini yeniden kullanmak istediğinizde Azure VM'leri ve SQL Server bağlantı dizesi IP adresleri için de idealdir.
Daha fazla ayrıntı alın
Bu öğretici adımında ele alınan konulardan biri hakkında daha fazla ayrıntı istiyor musunuz? Daha fazla bilgi edinmek için bu tablodaki bağlantıları kullanın.
Konu | Daha fazla bilgi edinin |
---|---|
Değişkenler | Azure CLI'yı başarıyla kullanma - Değerleri başka bir komuta geçirme bölümünde gelişmiş örneklere bakın |
Azure CLI komutlarında değişkenleri kullanma bölümünde değişkenlere iyi bir genel bakış okuyun. | |
Sorgulama | JMESPath sorgusu kullanarak Azure CLI komut çıktısını sorgulama bölümünde çok çeşitli örnekler bulabilirsiniz. |
Bash'i Azure CLI ile kullanmayı öğrenin bölümünde kullanarak Bash'e --query daha ayrıntılı bir bakış atın. |
|
Azure anahtar kasası | Azure Key Vault hakkında |
Azure rol tabanlı erişim denetimiyle Key Vault anahtarlarına, sertifikalarına ve gizli dizilerine erişim sağlayın. | |
Azure Key Vault için yaygın hata kodları | |
PowerShell | Başvuru bağlantıları: Get-content, Where-Object, Select-Object |
Sonraki Adım
Azure CLI komut çıktısını ve JSON özellik değerlerini depolamak için değişkenleri nasıl kullanacağınızı öğrendiğinize göre, Azure kaynaklarını silmek için betikleri kullanmayı öğrenmek için sonraki adıma geçin.