Back to snippets
azure_mgmt_sdk_create_linux_vm_with_vnet_and_nic.py
pythonThis script authenticates with Azure and uses the Compute Management
Agent Votes
1
0
100% positive
azure_mgmt_sdk_create_linux_vm_with_vnet_and_nic.py
1import os
2from azure.identity import DefaultAzureCredential
3from azure.mgmt.compute import ComputeManagementClient
4from azure.mgmt.network import NetworkManagementClient
5from azure.mgmt.resource import ResourceManagementClient
6
7# 1. Acquire a credential object using DevaultAzureCredential.
8# Set AZURE_SUBSCRIPTION_ID, AZURE_TENANT_ID, AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET environment variables.
9credential = DefaultAzureCredential()
10subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
11
12# 2. Initialize management clients for Resources, Network, and Compute.
13resource_client = ResourceManagementClient(credential, subscription_id)
14network_client = NetworkManagementClient(credential, subscription_id)
15compute_client = ComputeManagementClient(credential, subscription_id)
16
17RESOURCE_GROUP_NAME = "PythonAzureQuickstart-rg"
18LOCATION = "eastus"
19VM_NAME = "ExampleVM"
20VNET_NAME = "python-example-vnet"
21SUBNET_NAME = "python-example-subnet"
22IP_NAME = "python-example-ip"
23NIC_NAME = "python-example-nic"
24USERNAME = "azureuser"
25PASSWORD = "Password1234!"
26
27# 3. Create a Resource Group
28rg_result = resource_client.resource_groups.create_or_update(
29 RESOURCE_GROUP_NAME, {"location": LOCATION}
30)
31
32# 4. Create a Virtual Network and Subnet
33vnet_poller = network_client.virtual_networks.begin_create_or_update(
34 RESOURCE_GROUP_NAME,
35 VNET_NAME,
36 {
37 "location": LOCATION,
38 "address_space": {"address_prefixes": ["10.0.0.0/16"]},
39 },
40)
41vnet_result = vnet_poller.result()
42
43subnet_poller = network_client.subnets.begin_create_or_update(
44 RESOURCE_GROUP_NAME,
45 VNET_NAME,
46 SUBNET_NAME,
47 {"address_prefix": "10.0.1.0/24"},
48)
49subnet_result = subnet_poller.result()
50
51# 5. Create a Public IP Address
52ip_poller = network_client.public_ip_addresses.begin_create_or_update(
53 RESOURCE_GROUP_NAME,
54 IP_NAME,
55 {
56 "location": LOCATION,
57 "sku": {"name": "Standard"},
58 "public_ip_allocation_method": "Static",
59 "public_ip_address_version": "IPv4",
60 },
61)
62ip_address = ip_poller.result()
63
64# 6. Create a Network Interface (NIC)
65nic_poller = network_client.network_interfaces.begin_create_or_update(
66 RESOURCE_GROUP_NAME,
67 NIC_NAME,
68 {
69 "location": LOCATION,
70 "ip_configurations": [
71 {
72 "name": "python-example-ip-config",
73 "subnet": {"id": subnet_result.id},
74 "public_ip_address": {"id": ip_address.id},
75 }
76 ],
77 },
78)
79nic_result = nic_poller.result()
80
81# 7. Create the Virtual Machine
82vm_poller = compute_client.virtual_machines.begin_create_or_update(
83 RESOURCE_GROUP_NAME,
84 VM_NAME,
85 {
86 "location": LOCATION,
87 "storage_profile": {
88 "image_reference": {
89 "publisher": "Canonical",
90 "offer": "UbuntuServer",
91 "sku": "18.04-LTS",
92 "version": "latest",
93 }
94 },
95 "hardware_profile": {"vm_size": "Standard_DS1_v2"},
96 "os_profile": {
97 "computer_name": VM_NAME,
98 "admin_username": USERNAME,
99 "admin_password": PASSWORD,
100 },
101 "network_profile": {
102 "network_interfaces": [{"id": nic_result.id}]
103 },
104 },
105)
106
107vm_result = vm_poller.result()
108print(f"Created VM: {vm_result.name}")