Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda mempelajari cara menggunakan pustaka manajemen Azure SDK dalam skrip Python untuk membuat grup sumber daya yang berisi komputer virtual Linux.
Perintah Azure CLI yang setara dicantumkan nanti di artikel ini. Jika Anda lebih suka menggunakan portal Microsoft Azure, lihat Membuat VM Linux dan Membuat VM Windows.
Nota
Membuat komputer virtual melalui kode adalah proses multi-langkah yang melibatkan penyediaan sejumlah sumber daya lain yang diperlukan komputer virtual. Jika Anda hanya menjalankan kode tersebut dari baris perintah, jauh lebih mudah untuk menggunakan az vm create perintah , yang secara otomatis menyediakan sumber daya sekunder ini dengan default untuk pengaturan apa pun yang Anda pilih untuk dihilangkan. Satu-satunya argumen yang diperlukan adalah grup sumber daya, nama VM, nama image, dan info masuk. Untuk informasi selengkapnya, lihat Membuat komputer virtual dengan Azure CLI.
1: Menyiapkan lingkungan pengembangan lokal Anda
Jika Anda belum melakukannya, siapkan lingkungan tempat Anda dapat menjalankan kode ini. Berikut adalah beberapa opsi:
#!/bin/bash
# Create a virtual environment
python -m venv .venv
# Activate the virtual environment
source .venv/Scripts/activate # only required for Windows (Git Bash)
Gunakan lingkungan conda. Untuk menginstal Conda, lihat Menginstal Miniconda.
Gunakan Kontainer Dev di Visual Studio Code atau GitHub Codespaces.
2: Menginstal paket pustaka Azure yang diperlukan
Buat file requirements.txt yang menentukan paket manajemen Azure SDK yang diperlukan oleh skrip ini.
azure-mgmt-resource
azure-mgmt-compute
azure-mgmt-network
azure-identity
Selanjutnya, instal pustaka manajemen yang ditentukan dalam requirements.txt:
pip install -r requirements.txt
3: Menulis kode untuk membuat komputer virtual
Buat file Python bernama provision_vm.py dengan kode berikut. Komentar menjelaskan detailnya:
# Import the needed credential and management objects from the libraries.
import os
from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.network import NetworkManagementClient
from azure.mgmt.resource import ResourceManagementClient
print(
"Provisioning a virtual machine...some operations might take a \
minute or two."
)
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Step 1: Provision a resource group
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Constants we need in multiple places: the resource group name and
# the region in which we provision resources. You can change these
# values however you want.
RESOURCE_GROUP_NAME = "PythonAzureExample-VM-rg"
LOCATION = "westus2"
# Provision the resource group.
rg_result = resource_client.resource_groups.create_or_update(
RESOURCE_GROUP_NAME, {"location": LOCATION}
)
print(
f"Provisioned resource group {rg_result.name} in the \
{rg_result.location} region"
)
# For details on the previous code, see Example: Provision a resource
# group at https://learn.microsoft.com/azure/developer/python/
# azure-sdk-example-resource-group
# Step 2: provision a virtual network
# A virtual machine requires a network interface client (NIC). A NIC
# requires a virtual network and subnet along with an IP address.
# Therefore we must provision these downstream components first, then
# provision the NIC, after which we can provision the VM.
# Network and IP address names
VNET_NAME = "python-example-vnet"
SUBNET_NAME = "python-example-subnet"
IP_NAME = "python-example-ip"
IP_CONFIG_NAME = "python-example-ip-config"
NIC_NAME = "python-example-nic"
# Obtain the management object for networks
network_client = NetworkManagementClient(credential, subscription_id)
# Provision the virtual network and wait for completion
poller = network_client.virtual_networks.begin_create_or_update(
RESOURCE_GROUP_NAME,
VNET_NAME,
{
"location": LOCATION,
"address_space": {"address_prefixes": ["10.0.0.0/16"]},
},
)
vnet_result = poller.result()
print(
f"Provisioned virtual network {vnet_result.name} with address \
prefixes {vnet_result.address_space.address_prefixes}"
)
# Step 3: Provision the subnet and wait for completion
poller = network_client.subnets.begin_create_or_update(
RESOURCE_GROUP_NAME,
VNET_NAME,
SUBNET_NAME,
{"address_prefix": "10.0.0.0/24"},
)
subnet_result = poller.result()
print(
f"Provisioned virtual subnet {subnet_result.name} with address \
prefix {subnet_result.address_prefix}"
)
# Step 4: Provision an IP address and wait for completion
poller = network_client.public_ip_addresses.begin_create_or_update(
RESOURCE_GROUP_NAME,
IP_NAME,
{
"location": LOCATION,
"sku": {"name": "Standard"},
"public_ip_allocation_method": "Static",
"public_ip_address_version": "IPV4",
},
)
ip_address_result = poller.result()
print(
f"Provisioned public IP address {ip_address_result.name} \
with address {ip_address_result.ip_address}"
)
# Step 5: Provision the network interface client
poller = network_client.network_interfaces.begin_create_or_update(
RESOURCE_GROUP_NAME,
NIC_NAME,
{
"location": LOCATION,
"ip_configurations": [
{
"name": IP_CONFIG_NAME,
"subnet": {"id": subnet_result.id},
"public_ip_address": {"id": ip_address_result.id},
}
],
},
)
nic_result = poller.result()
print(f"Provisioned network interface client {nic_result.name}")
# Step 6: Provision the virtual machine
# Obtain the management object for virtual machines
compute_client = ComputeManagementClient(credential, subscription_id)
VM_NAME = "ExampleVM"
USERNAME = "azureuser"
PASSWORD = "ChangePa$$w0rd24"
print(
f"Provisioning virtual machine {VM_NAME}; this operation might \
take a few minutes."
)
# Provision the VM specifying only minimal arguments, which defaults
# to an Ubuntu 18.04 VM on a Standard DS1 v2 plan with a public IP address
# and a default virtual network/subnet.
poller = compute_client.virtual_machines.begin_create_or_update(
RESOURCE_GROUP_NAME,
VM_NAME,
{
"location": LOCATION,
"storage_profile": {
"image_reference": {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "16.04.0-LTS",
"version": "latest",
}
},
"hardware_profile": {"vm_size": "Standard_DS1_v2"},
"os_profile": {
"computer_name": VM_NAME,
"admin_username": USERNAME,
"admin_password": PASSWORD,
},
"network_profile": {
"network_interfaces": [
{
"id": nic_result.id,
}
]
},
},
)
vm_result = poller.result()
print(f"Provisioned virtual machine {vm_result.name}")
Autentikasi dalam kode
Kemudian dalam artikel ini, Anda masuk ke Azure menggunakan Azure CLI untuk menjalankan kode sampel. Jika akun Anda memiliki izin yang memadai untuk membuat grup sumber daya dan sumber daya penyimpanan di langganan Azure Anda, skrip harus berjalan dengan sukses tanpa konfigurasi tambahan.
Untuk penerapan kode ini di lingkungan produksi, autentikasi menggunakan prinsipal layanan dengan mengatur variabel lingkungan. Pendekatan ini memungkinkan akses otomatis yang aman tanpa mengandalkan login interaktif. Untuk panduan terperinci, lihat Cara mengautentikasi aplikasi Python dengan layanan Azure.
Pastikan bahwa perwakilan layanan diberi peran dengan izin yang memadai untuk membuat grup sumber daya dan akun penyimpanan. Misalnya, menetapkan peran Kontributor di tingkat langganan menyediakan akses yang diperlukan. Untuk mempelajari selengkapnya tentang penetapan peran, lihat Kontrol akses berbasis peran (RBAC) di Azure.
Tautan referensi untuk kelas yang digunakan dalam kode
- Defaultredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- NetworkManagementClient (azure.mgmt.network)
- ComputeManagementClient (azure.mgmt.compute)
4. Jalankan skrip
Jika Anda belum melakukannya, masuk ke Azure menggunakan Azure CLI:
az loginAtur
AZURE_SUBSCRIPTION_IDvariabel lingkungan ke ID langganan Anda. (Anda dapat menjalankan perintah az account show dan mendapatkan ID langganan Anda dariidproperti dalam output):export AZURE_SUBSCRIPTION_ID=$(az account show --query id -o tsv)Jalankan skrip:
python provision_vm.py
Proses penyediaan memerlukan waktu beberapa menit untuk selesai.
5. Verifikasi sumber daya
Buka portal Microsoft Azure, navigasikan ke grup sumber daya "PythonAzureExample-VM-rg", dan perhatikan komputer virtual, disk virtual, grup keamanan jaringan, alamat IP publik, antarmuka jaringan, dan jaringan virtual.
Anda juga dapat menggunakan Azure CLI untuk memverifikasi bahwa VM ada dengan perintah az vm list :
az vm list --resource-group PythonAzureExample-VM-rg
Perintah Azure CLI yang setara
# Provision the resource group
az group create -n PythonAzureExample-VM-rg -l westus2
# Provision a virtual network and subnet
az network vnet create -g PythonAzureExample-VM-rg -n python-example-vnet \
--address-prefix 10.0.0.0/16 --subnet-name python-example-subnet \
--subnet-prefix 10.0.0.0/24
# Provision a public IP address
az network public-ip create -g PythonAzureExample-VM-rg -n python-example-ip \
--allocation-method Dynamic --version IPv4
# Provision a network interface client
az network nic create -g PythonAzureExample-VM-rg --vnet-name python-example-vnet \
--subnet python-example-subnet -n python-example-nic \
--public-ip-address python-example-ip
# Provision the virtual machine
az vm create -g PythonAzureExample-VM-rg -n ExampleVM -l "westus2" \
--nics python-example-nic --image UbuntuLTS --public-ip-sku Standard \
--admin-username azureuser --admin-password ChangePa$$w0rd24
Jika Anda mendapatkan kesalahan tentang pembatasan kapasitas, Anda dapat mencoba ukuran atau wilayah yang berbeda. Untuk informasi selengkapnya, lihat Mengatasi kesalahan untuk SKU yang tidak tersedia.
6: Membersihkan sumber daya
Biarkan sumber daya di tempat jika Anda ingin terus menggunakan komputer virtual dan jaringan yang Anda buat di artikel ini. Jika tidak, jalankan perintah az group delete untuk menghapus grup sumber daya.
Grup sumber daya tidak dikenakan biaya berkelanjutan dalam langganan Anda, tetapi sumber daya yang terkandung dalam grup, seperti komputer virtual, mungkin terus dikenakan biaya. Ini adalah praktik yang baik untuk membersihkan grup apa pun yang tidak Anda gunakan secara aktif. Argumen --no-wait memungkinkan perintah untuk segera kembali alih-alih menunggu operasi selesai.
az group delete -n PythonAzureExample-VM-rg --no-wait
Anda juga dapat menggunakan metode ResourceManagementClient.resource_groups.begin_delete untuk menghapus grup sumber daya dari kode. Kode dalam Contoh: Membuat grup sumber daya menampilkan penggunaannya.
Lihat juga
- Contoh : Membuat grup sumber daya
- Contoh : Mendaftar grup sumber daya dalam langganan
- Contoh : Membuat azure Storage
- Contoh: Menggunakan Azure Storage
- Contoh: Membuat aplikasi web dan menyebarkan kode
- Contoh: Membuat dan mengkueri database
- Menggunakan Disk Terkelola Azure dengan komputer virtual
- Menyelesaikan survei singkat tentang Azure SDK untuk Python
Sumber daya berikut berisi contoh yang lebih komprehensif menggunakan Python untuk membuat komputer virtual:
- Sampel Manajemen Azure Virtual Machines - Python (GitHub). Sampel menunjukkan lebih banyak operasi manajemen seperti memulai dan memulai ulang VM, menghentikan dan menghapus VM, meningkatkan ukuran disk, dan mengelola disk data.