This post is about an unofficial Azure library for Python called azurerm – a simple set of wrappers for Azure Resource Manager REST calls. If you’re looking for an official Python library for Microsoft Azure, there’s a bundle called azure which installs all the official Azure Python packages. That would be the recommended approach if you’re developing a Python based Azure solution.
azurerm provides an easy framework for making Azure REST calls and getting back the JSON response. This can be handy when you’re doing simple testing and writing utility scripts. The goal is simplicity over completeness of API. If all you want to do is create/list/query/delete a few Azure Resource Manager resources in a Python script, and you don’t want to go through 2-factor authentication, azurerm provides a simple way to do it. It also provides a basic authentication routine based on adal to get an authentication token.
For example, to list the VNETs in your subscription, you could write something like this:
vnets = azurerm.list_vnets(access_token, subscription_id) for vnet in vnets['value']: print(vnet['name'] + ', ' + vnet['location'])
Or to get the details for all the public IP addresses in your subscription and print out the JSON:
ips = azurerm.list_public_ips(access_token, subscription_id, resource_group) print(json.dumps(ips, sort_keys=False, indent=2, separators=(',', ': ')))
To install azurerm (note azurerm has only been tested with Python 3):
pip install azurem
Authenticating to Azure
azurerm function calls take an access token as the first argument. To get an access token you need a tenant id, and application id and an application secret. Then you can call the get_access_token function like this:
import azurerm access_token = azurerm.get_access_token(tenant_id, app_id, app_secret)
To get these values you need to follow some one-time steps to register an application with Azure, create a Active Directory Service Principal (like a virtual user) and assign its privileges. These steps are well-documented here: Authenticating a service principal with Azure Resource Manager. I also cover the basics in this post: Azure Resource Manager REST calls from Python.
You can find examples for most azurerm functions documented in the github project: https://github.com/gbowerman/azurerm – see the readme and examples.md. The readme also includes the current list of supported functions.
Here’s another example, including authentication, showing how to issue a scale action against a VM Scale Set (including authentication), in this case changing the number of VMs in a Scale Set to 5:
import azurerm tenant_id = 'your_tenant_id' app_id = 'your_application_id' app_secret = 'your_app_secret' subscription_id = 'your_sub_id' access_token = azurerm.get_access_token(tenant_id, app_id, app_secret) scaleoutput = azurerm.scale_vmss(access_token, subscription_id, 'myresourcegroup', 'myvmss', 'Standard_A1', 'Standard', 5) print(scaleoutput)
Add pygame for a GUI console
The simple REST framework of azurerm means it’s easy to add new functions to the library. I mostly add them as I need them and am open to requests. What I will try and avoid doing is making it any more complicated than it is. Official libraries exist for Azure. azurem is about making the Azure REST API more accessible.