Azure Virtual Machines Management Samples - Python

These samples demonstrate how to perform common management tasks with Microsoft Azure Virtual Machines using the Azure SDK for Python. The code provided shows how to do the following:

  • Create virtual machines:
    • Create a Linux virtual machine
    • Create a Windows virtual machine
  • Update a virtual machine:
    • Expand a drive
    • Tag a virtual machine
    • Attach data disks
    • Detach data disks
  • Operate a virtual machine:
    • Start a virtual machine
    • Stop a virtual machine
    • Restart a virtual machine
  • List virtual machines
  • Delete a virtual machine

To see the code to perform these operations, check out the run_example() function in Each operation is clearly labeled with a comment and a print function. The examples are not necessarily in the order shown in the above list.

Running this sample

  1. If you don't already have it, install Python.

    This sample (and the SDK) is compatible with Python 2.7, 3.4, 3.5, 3.6 and 3.7.

  2. General recommendation for Python development is to use a Virtual Environment. For more information, see

    Install and initialize the virtual environment with the "venv" module on Python 3 (you must install virtualenv for Python 2.7):

    python -m venv mytestenv # Might be "python3" or "py -3.6" depending on your Python installation
    cd mytestenv
    source bin/activate      # Linux shells (Bash, ZSH, etc.)
    scripts\activate         # Windows shells (PowerShell, CMD)
  3. Clone the repository.

    git clone
  4. Install the dependencies using pip.

    cd virtual-machines-python-manage
    pip install -r requirements.txt
  5. Create an Azure service principal either through Azure CLI, PowerShell or the portal.

    Retrieve the application ID (a.k.a. client ID), authentication key (a.k.a. client secret), tenant ID and subscription ID from the Azure portal for use in the next step. This document describes where to find them (besides the subscription ID, which is in the "Overview" section of the "Subscriptions" blade.)

  6. Fill in and export these environment variables into your current shell.

    export AZURE_TENANT_ID={your tenant id}
    export AZURE_CLIENT_ID={your client id}
    export AZURE_CLIENT_SECRET={your client secret}
    export AZURE_SUBSCRIPTION_ID={your subscription id}
  7. Run the sample.



Retrieving a VM's OS disk

You may be tempted to try to retrieve a VM's OS disk by using virtual_machine.storage_profile.os_disk. In some cases, this may do what you want, but be aware that it gives you an OSDisk object. In order to update the OS Disk's size, as does, you need not an OSDisk object but a Disk object. gets the Disk object with the following:

os_disk_name =
os_disk = compute_client.disks.get(GROUP_NAME, os_disk_name)

More information

Here are some helpful links:

If you don't have a Microsoft Azure subscription you can get a FREE trial account here.

Azure Stack Sample

The Azure Stack sample under Hybrid folder has moved to

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.