Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Azure CLI'daki değişkenini kullanarak büyük ölçekte derleme ve yok etme işlemleri gerçekleştirebilirsiniz.
Önkoşullar
- Depolama hesabı düzeyinde veya daha yüksek izinlere sahip
readerbir kaynak grubuna ve depolama hesabına erişiminiz vardır.
JMESPath sorgusunu kullanarak komut çıktısı alma
komutunun parametresini --queryshow 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.
Tavsiye
--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 json bölümünde varsayılan çıkış yapılandırmasından yararlanır
Azure kaynağının JSON sözlük özelliklerini alma
Bash, PowerShell ve Cmd'de Learn Azure CLI söz dizimi farkları başlıklı belgede oluşturulan depolama hesabını kullanarak yeni depolama hesabınızın primaryEndpoints bilgisini alın.
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 tablo çıkışı. Her sütunun ilk harfi --output table üzerinde büyük harfle yazılmıştır.
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Sorgu sonuçlarını filtreleme
Alıntılama ile --query hakkında öğrendiklerinizi birleştirin. Bu örnekler filtre uygular.
Bash'te, eşittir (=) işaretinden önce veya sonra boşluk olamaz. Değişken değeri etrafında tırnak işaretleri kullanmayı tercih edebilirsiniz, böylece msdocs-tutorial-rg-00000000 ve "msdocs-tutorial-rg-00000000" her 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 çıktısını bir değişkende depolamayı öğrenmek, korunması gereken gizli bilgiler veren Azure kaynakları oluştururken faydalıdır. Örneğin, bir hizmet asıl nesnesi oluşturduğunuzda, kimlik bilgilerini sıfırladığınızda veya Azure Anahtar Kasası'ndan bir gizli anahtar aldığınızda, komut çıkışı korumalıdır.
Komut çıktısını bir değişkene döndürerek yeni bir Azure Key Vault ve gizli anahtar 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 örnekler, bir öğretici ders olduğundan, değişken değerlerini doğrulamak için echo kullanılır. Üretim düzeyindeki ortamlarda echo gizli ve parola değerleri için kullanmayın.
# 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 Key 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, işe alıştırma eğitimi için bir "zorlayıcı görev" bulunur. 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, msdocs-tutorial.json'yi dosyanızın adıyla değiştirin. Çıktı günlük dosyanıza kaydedildiği için echo komutunu üretim seviyesindeki betiklere eklemeyin.
Aşağıdaki 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
"jq komutu bulunamadı" hatası mı aldınız? Betik Bash jq komutuna bağlı olduğundan bu hata oluşur. 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. Aynı yöntem, Azure CLI betiklerini yeniden kullanmak istediğinizde Azure VM'lerinin VE SQL Server bağlantı dizelerinin IP adresleri için de iyidir.
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 İşlemi | JMESPath sorgusu kullanarak Azure CLI komut çıktısını sorgulama bölümünde çok çeşitli örnekler bulabilirsiniz. |
--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.