Azure Otomasyonu'nda Python 3 paketlerini yönetme

Bu makalede, Azure korumalı alan ortamında ve Karma Runbook Çalışanlarında çalışan Azure Otomasyonu Python 3 paketlerini içeri aktarma, yönetme ve kullanma işlemleri açıklanmaktadır. Başarılı bir iş yürütmesi için Python paketleri Karma Runbook çalışanlarına indirilmelidir. Runbook'ları basitleştirmeye yardımcı olması için, ihtiyacınız olan modülleri içeri aktarmak için Python paketlerini kullanabilirsiniz.

Python 2 paketlerini yönetme hakkında bilgi için bkz . Python 2 paketlerini yönetme.

Varsayılan Python paketleri

Otomasyon hizmetinde Python 3.8 runbook'larını desteklemek için, bazı Python paketleri varsayılan olarak yüklenir ve bu paketlerin listesi buradadır. Python paketleri Otomasyon hesabınıza aktarılarak varsayılan sürüm geçersiz kılınabilir.

Otomasyon hesabınızdaki içeri aktarılan sürüm tercih edilir. Tek bir paketi içeri aktarmak için bkz . Paketi içeri aktarma. Birden çok paket içeren bir paketi içeri aktarmak için bkz . Bağımlılıkları olan bir paketi içeri aktarma.

Dekont

Python 3.10 (önizleme) için yüklü varsayılan paket yoktur.

Kaynak dosya olarak paketler

Azure Otomasyonu yalnızca Python kodu içeren ve diğer dillerdeki diğer dil uzantılarını veya kodları içermeyen bir Python paketini destekler. Ancak Azure Korumalı Alan ortamında C/C++ ikili dosyaları için gerekli derleyiciler olmayabilir, bu nedenle bunun yerine tekerlek dosyalarının kullanılması önerilir.

Dekont

Şu anda Python 3.10 (önizleme) yalnızca tekerlek dosyalarını destekler.

Python Paket Dizini (PyPI), Python programlama dili için bir yazılım deposudur. PyPI'dan Otomasyon hesabınıza aktarmak için bir Python 3 paketi seçerken aşağıdaki dosya adı bölümlerini not edin:

Python sürümü seçin:

Dosya adı bölümü Tanım
cp38 Otomasyon, Bulut işleri için Python 3.8'i destekler.
amd64 Azure korumalı alan işlemleri Windows 64 bit mimarisidir.

Örnek:

  • Pandas'ı içeri aktarmak için - gibi pandas-1.2.3-cp38-win_amd64.whlbir ada sahip bir tekerlek dosyası seçin.

PyPI'da bulunan bazı Python paketleri tekerlek dosyası sağlamaz. Bu durumda, kaynağı (.zip veya .tar.gz dosyası) indirin ve kullanarak piptekerlek dosyasını oluşturun.

Python 3.8.x ve tekerlek paketi yüklü bir 64 bit Windows makinesi kullanarak aşağıdaki adımları gerçekleştirin:

  1. Kaynak dosyasını pandas-1.2.4.tar.gzindirin.
  2. Aşağıdaki komutla tekerlek dosyasını almak için pip komutunu çalıştırın: pip wheel --no-deps pandas-1.2.4.tar.gz

Paketi içeri aktarma

  1. Otomasyon hesabınızda Paylaşılan Kaynaklar bölümündeki Python paketleri'ni seçin. Ardından + Python paketi ekle'yi seçin.

    Screenshot of the Python packages page shows Python packages in the left menu and Add a Python package highlighted.

  2. Python Paketi Ekle sayfasında karşıya yüklenecek yerel paketi seçin. Paket, Python 3.8 için .whl veya .tar.gz dosyası ve Python 3.10 için .whl dosyası (önizleme) olabilir.

  3. Bir ad girin ve Çalışma Zamanı Sürümünü Python 3.8 veya Python 3.10 (önizleme) olarak seçin.

    Dekont

    Python 3.10 (önizleme) çalışma zamanı sürümü şu anda Orta Avustralya2, Güney Kore, İsveç Güney, Jio Hindistan Orta, Brezilya Güneydoğu, Orta Hindistan, Batı Hindistan, BAE Orta ve Gov bulutları dışındaki tüm Genel bölgelerde Bulut ve Hibrit işleri için desteklenmektedir.

  4. İçeri aktar'ı seçin.

    Screenshot shows the Add Python 3.8 Package page with an uploaded tar.gz file selected.

Paket içeri aktarıldıktan sonra, Otomasyon hesabınızdaki Python paketleri sayfasında listelenir. Paketi kaldırmak için paketi ve ardından Sil'i seçin.

Screenshot shows the Python 3.8 packages page after a package has been imported.

Bağımlılıkları olan bir paketi içeri aktarma

Aşağıdaki Python betiğini bir Python 3.8 runbook'una aktararak bir Python 3.8 paketini ve bağımlılıklarını içeri aktarabilirsiniz. Yönetilen kimliğin Otomasyon hesabınız için etkinleştirildiğinden ve paketin başarıyla içeri aktarılması için Otomasyon Katılımcısı erişimine sahip olduğundan emin olun.

https://github.com/azureautomation/runbooks/blob/master/Utility/Python/import_py3package_from_pypi.py

Betiği runbook'a aktarma

Runbook'u içeri aktarma hakkında bilgi edinmek için bkz. Azure portalından bir runbook'u içeri aktarma. İçeri aktarmayı çalıştırmadan önce dosyayı GitHub'dan, portalın erişebileceği depolama alanına kopyalayın.

Dekont

Şu anda Python 3.10 (önizleme) için Azure Portal'dan bir runbook içeri aktarılamıyor.

Runbook'u içeri aktarma sayfası, runbook adını varsayılan olarak betiğin adıyla eşleşecek şekilde kullanır. Alana erişiminiz varsa, adı değiştirebilirsiniz. Runbook türü varsayılan olarak Python 2.7 olabilir. Bu durumda Python 3.8 olarak değiştirdiğinizden emin olun.

Screenshot shows the Python 3 runbook import page.

Paketi ve bağımlılıkları içeri aktarmak için runbook'u yürütme

Runbook'u oluşturup yayımladıktan sonra, paketi içeri aktarmak için çalıştırın. Runbook'u yürütme hakkında ayrıntılı bilgi için bkz. Azure Otomasyonu'nda runbook başlatma.

Betik (import_py3package_from_pypi.py), aşağıdaki parametreleri gerektirir.

Parametre Açıklama
subscription_id Otomasyon hesabının abonelik kimliği
resource_group Otomasyon hesabının tanımlandığı kaynak grubunun adı
automation_account Otomasyon hesabı adı
module_name İçeri aktarılacağınız modülün adı pypi.org
module_version Modülün sürümü

Parametre değeri aşağıdaki biçimde tek bir dize olarak sağlanmalıdır:

-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>

Runbook'larla parametreleri kullanma hakkında daha fazla bilgi için bkz . Runbook parametreleriyle çalışma.

Runbook'ta paket kullanma

Paket içeri aktarıldığında, bunu bir runbook'ta kullanabilirsiniz. Azure aboneliğindeki tüm kaynak gruplarını listelemek için aşağıdaki kodu ekleyin.

#!/usr/bin/env python3 
import os 
import requests  
# printing environment variables 
endPoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/" 
identityHeader = os.getenv('IDENTITY_HEADER') 
payload={} 
headers = { 
  'X-IDENTITY-HEADER': identityHeader,
  'Metadata': 'True' 
} 
response = requests.request("GET", endPoint, headers=headers, data=payload) 
print(response.text)

Dekont

Python automationassets paketi pypi.org kullanılamaz, bu nedenle Windows karma runbook çalışanına aktarılamayabilir.

Korumalı alanda kullanılabilir paketleri tanımlama

Varsayılan yüklü modülleri listelemek için aşağıdaki kodu kullanın:

#!/usr/bin/env python3

import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
   for i in installed_packages])

for package in installed_packages_list:
    print(package)

Python 3.8 PowerShell cmdlet'leri

Yeni Python 3.8 paketi ekleme

New-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl 

Response  
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : requires.io 
IsGlobal              : False 
Version               : 
SizeInBytes           : 0 
ActivityCount         : 0 
CreationTime          : 9/26/2022 1:37:13 PM +05:30 
LastModifiedTime      : 9/26/2022 1:37:13 PM +05:30 
ProvisioningState     : Creating 

Tüm Python 3.8 paketlerini listeleme

Get-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja 

Response : 
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : cryptography 
IsGlobal              : False 
Version               : 
SizeInBytes           : 0 
ActivityCount         : 0 
CreationTime          : 9/26/2022 11:52:28 AM +05:30 
LastModifiedTime      : 9/26/2022 12:11:00 PM +05:30 
ProvisioningState     : Failed 
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : requires.io 
IsGlobal              : False 
Version               : 
SizeInBytes           : 0 
ActivityCount         : 0 
CreationTime          : 9/26/2022 1:37:13 PM +05:30 
LastModifiedTime      : 9/26/2022 1:39:04 PM +05:30 
ProvisioningState     : ContentValidated 
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : sockets 
IsGlobal              : False 
Version               : 1.0.0 
SizeInBytes           : 4495 
ActivityCount         : 0 
CreationTime          : 9/20/2022 12:46:28 PM +05:30 
LastModifiedTime      : 9/22/2022 5:03:42 PM +05:30 
ProvisioningState     : Succeeded 

Belirli bir paketle ilgili ayrıntıları alma

Get-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name sockets 


Response  
ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : sockets 
IsGlobal              : False 
Version               : 1.0.0 
SizeInBytes           : 4495 
ActivityCount         : 0 
CreationTime          : 9/20/2022 12:46:28 PM +05:30 
LastModifiedTime      : 9/22/2022 5:03:42 PM +05:30 
ProvisioningState     : Succeeded 

Python 3.8 paketini kaldırma

Remove-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name sockets 

Python 3.8 paketini güncelleştirme

Set-AzAutomationPython3Package -AutomationAccountName tarademo  -ResourceGroupName mahja -Name requires.io -ContentLinkUri https://files.pythonhosted.org/packages/7f/e2/85dfb9f7364cbd7a9213caea0e91fc948da3c912a2b222a3e43bc9cc6432/requires.io-0.2.6-py2.py3-none-any.whl 


ResourceGroupName     : mahja 
AutomationAccountName : tarademo 
Name                  : requires.io 
IsGlobal              : False 
Version               : 0.2.6 
SizeInBytes           : 10109 
ActivityCount         : 0 
CreationTime          : 9/26/2022 1:37:13 PM +05:30 
LastModifiedTime      : 9/26/2022 1:43:12 PM +05:30 
ProvisioningState     : Creating 

Sonraki adımlar

Python runbook'u hazırlamak için bkz . Python runbook'u oluşturma.