Peter Hoffmann

EuroPython 2017 - Infrastructure as Python Code - Run Your Services on Microsoft Azure

The Microsoft Azure Cloud (https://azure.microsoft.com/) offers different ways to provision, deploy, and run your Python service:

Azure Resource Manager (ARM) templates (https://azure.microsoft.com/en-us/resources/templates/) allow you to provision your application using a declarative template. With parameters, variables, and Azure template functions, the same template can deploy your application to different stages (dev, test, production) and to different customer environments. We have open-sourced the Tropo library (https://pypi.python.org/pypi/tropo/) to create Azure Resource Manager templates from Python.

The Azure SDK for Python (http://azure-sdk-for-python.readthedocs.io) provides low-level access to manage resources in the Azure Cloud.

Azure Ansible modules (https://docs.ansible.com/ansible/guide_azure.html), based on the Azure SDK, automate software provisioning, configuration management, and application deployment across your environments.

Each option has different strengths and drawbacks. Sharing our lessons learned from migrating our infrastructure to the Azure Cloud will help avoid common pitfalls and show deployment patterns that make life easier for DevOps teams.