Aracılığıyla paylaş


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 --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.

İ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 tablebü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 --querybirleş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'detest 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.