title | description | services | ms.subservice | ms.date | ms.topic | ms.custom |
---|---|---|---|---|---|---|
Manage Python 2 packages in Azure Automation |
This article tells how to manage Python 2 packages in Azure Automation. |
automation |
process-automation |
10/29/2021 |
conceptual |
devx-track-python |
This article describes how to import, manage, and use Python 2 packages in Azure Automation running on the Azure sandbox environment and Hybrid Runbook Workers. To help simplify runbooks, you can use Python packages to import the modules you need.
For information on managing Python 3 packages, see Manage Python 3 packages.
-
In your Automation account, select Python packages under Shared Resources. Click + Add a Python package.
:::image type="content" source="media/python-packages/add-python-package.png" alt-text="Screenshot of the Python packages page shows Python packages in the left menu and Add a Python package highlighted.":::
-
On the Add Python Package page, select a local package to upload. The package can be a .whl or .tar.gz file.
-
Enter the name and select the Runtime version as 2.x.x
-
Select Import.
:::image type="content" source="media/python-packages/upload-package.png" alt-text="Screenshot shows the Add Python Package page with an uploaded tar.gz file selected.":::
After a package has been imported, it's listed on the Python packages page in your Automation account. To remove a package, select the package and click Delete.
:::image type="content" source="media/python-packages/package-list.png" alt-text="Screenshot shows the Python 2.7.x packages page after a package has been imported.":::
Azure automation doesn't resolve dependencies for Python packages during the import process. There are two ways to import a package with all its dependencies. Only one of the following steps needs to be used to import the packages into your Automation account.
On a Windows 64-bit machine with Python2.7 and pip installed, run the following command to download a package and all its dependencies:
C:\Python27\Scripts\pip2.7.exe download -d <output dir> <package name>
Once the packages are downloaded, you can import them into your automation account.
To obtain a runbook, import Python 2 packages from pypi into Azure Automation account from the Azure Automation GitHub organization into your Automation account. Make sure the Run Settings are set to Azure and start the runbook with the parameters. The runbook requires a Run As account for the Automation account to work. For each parameter make sure you start it with the switch as seen in the following list and image:
- -s <subscriptionId>
- -g <resourceGroup>
- -a <automationAccount>
- -m <modulePackage>
:::image type="content" source="media/python-packages/import-python-runbook.png" alt-text="Screenshot shows the Overview page for import_py2package_from_pypi with the Start Runbook pane on the right side.":::
The runbook allows you to specify what package to download. For example, use of the Azure
parameter downloads all Azure modules and all dependencies (about 105).
After the runbook is complete, you can check the Python packages under Shared Resources in your Automation account to verify that the package has been imported correctly.
With a package imported, you can use it in a runbook. The following example uses the Azure Automation utility package. This package makes it easier to use Python with Azure Automation. To use the package, follow the instructions in the GitHub repository and add it to the runbook. For example, you can use from azure_automation_utility import get_automation_runas_credential
to import the function for retrieving the Run As account.
import azure.mgmt.resource
import automationassets
from azure_automation_utility import get_automation_runas_credential
# Authenticate to Azure using the Azure Automation RunAs service principal
runas_connection = automationassets.get_automation_connection("AzureRunAsConnection")
azure_credential = get_automation_runas_credential()
# Intialize the resource management client with the RunAs credential and subscription
resource_client = azure.mgmt.resource.ResourceManagementClient(
azure_credential,
str(runas_connection["SubscriptionId"]))
# Get list of resource groups and print them out
groups = resource_client.resource_groups.list()
for group in groups:
print group.name
Note
The Python automationassets
package is not available on pypi.org, so it's not available for import onto a Windows machine.
To develop and test your Python 2 runbooks offline, you can use the Azure Automation Python emulated assets module on GitHub. This module allows you to reference your shared resources such as credentials, variables, connections, and certificates.
To prepare a Python runbook, see Create a Python runbook.