Я хочу автоматизировать ресурсы Azure (запуск / остановка виртуальной машины). В настоящее время я использую модуль Runbook для учетной записи автоматизации, и он работает нормально, но мне нужно реализовать структуру, в которой что-то лежит:
1) Запускать модуль Runbook при помещении нового объекта (листа Excel) в корзину Azure. 2) Прочтите лист Excel для входных переменных
Ниже приведен код Runbook
Кто-нибудь, пожалуйста, скажите мне, как лучше всего запустить Runbook, который подходит для вышеуказанной структуры
"" "Документация по автоматизации Azure: https://aka.ms/azure-automation-python-documentation Документация по SDK для Azure Python: https://aka.ms/azure-python-sdk "" "import os import sys from azure.mgmt.compute import ComputeManagementClient import azure.mgmt.resource import automationassets
def get_automation_runas_credential (runas_connection): из OpenSSL импортировать крипто-импорт binascii из msrestazure import azure_active_directory import adal
# Get the Azure Automation RunAs service principal certificate
cert = automationassets.get_automation_certificate("AzureRunAsCertificate")
pks12_cert = crypto.load_pkcs12(cert)
pem_pkey = crypto.dump_privatekey(crypto.FILETYPE_PEM,pks12_cert.get_privatekey())
# Get run as connection information for the Azure Automation service principal
application_id = runas_connection["ApplicationId"]
thumbprint = runas_connection["CertificateThumbprint"]
tenant_id = runas_connection["TenantId"]
# Authenticate with service principal certificate
resource ="https://management.core.windows.net/"
authority_url = ("https://login.microsoftonline.com/"+tenant_id)
context = adal.AuthenticationContext(authority_url)
return azure_active_directory.AdalAuthentication(
lambda: context.acquire_token_with_client_certificate(
resource,
application_id,
pem_pkey,
thumbprint)
)
Аутентификация в Azure с помощью субъекта-службы Azure Automation RunAs
runas_connection = automationassets.get_automation_connection ("AzureRunAsConnection") azure_credential = get_automation_runas_credential (runas_connection)
Инициализируйте клиент управления вычислениями с учетными данными RunAs и укажите подписку, с которой будет работать.
compute_client = ComputeManagementClient (azure_credential, str (runas_connection ["SubscriptionId"]))
print ('\ nStart VM') async_vm_start = compute_client.virtual_machines.start (
'resource1', 'vm1') async_vm_start.wait () '' 'print (' \ nStop VM ') async_vm_stop = compute_client.virtual_machines.power_off (resource_group_name, vm_name) async_vm_stop.wait ()' '