Contoh: Menggunakan pustaka Azure untuk membuat komputer virtual
Dalam artikel ini, Anda mempelajari cara menggunakan pustaka manajemen Azure SDK dalam skrip Python untuk membuat grup sumber daya yang berisi komputer virtual Linux.
Semua perintah dalam artikel ini bekerja secara sama di bash Linux/macOS dan shell perintah Windows kecuali ada catatan.
Perintah Azure CLI yang setara dicantumkan nanti di artikel ini. Jika Anda lebih suka menggunakan portal Azure, lihat Membuat VM Linux dan Membuat VM Windows.
Catatan
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 seperti itu dari baris perintah, jauh lebih mudah untuk menggunakan perintah az vm create
, 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 gambar, dan info masuk. Untuk informasi selengkapnya, lihat Membuat cepat mesin virtual Linux dengan CLI Azure.
1: Siapkan lingkungan pengembangan lokal Anda
Jika Anda belum melakukannya, siapkan lingkungan tempat Anda dapat menjalankan kode ini. Berikut ini adalah beberapa opsi:
Mengonfigurasi lingkungan virtual Python. Anda dapat membuat lingkungan virtual secara lokal atau di Azure Cloud Shell dan menjalankan kode di sana. Pastikan untuk mengaktifkan lingkungan virtual untuk mulai menggunakannya.
Gunakan lingkungan conda.
Gunakan Kontainer Dev di Visual Studio Code atau GitHub Codespaces.
2: Instal paket pustaka Azure yang diperlukan
Buat file requirements.txt yang mencantumkan pustaka manajemen yang digunakan dalam contoh ini:
azure-mgmt-resource
azure-mgmt-compute
azure-mgmt-network
azure-identity
Kemudian, di terminal atau prompt perintah Anda dengan lingkungan virtual diaktifkan, instal pustaka manajemen yang tercantum di 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 akan 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 dengan Azure CLI untuk menjalankan kode sampel. Jika akun Anda memiliki izin untuk membuat grup sumber daya dan jaringan dan sumber daya komputasi di langganan Azure Anda, kode akan berjalan dengan sukses.
Untuk menggunakan kode tersebut dalam skrip produksi, Anda dapat mengatur variabel lingkungan untuk menggunakan metode berbasis perwakilan layanan untuk autentikasi. Untuk mempelajari selengkapnya, lihat Cara mengautentikasi aplikasi Python dengan layanan Azure. Anda perlu memastikan bahwa perwakilan layanan memiliki izin yang memadai untuk membuat grup sumber daya dan jaringan dan sumber daya komputasi dalam langganan Anda dengan menetapkan peran yang sesuai di Azure; misalnya, peran Kontributor pada langganan Anda.
Tautan referensi untuk kelas yang digunakan dalam kode ini
- DefaultAzureCredential (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 login
Atur
AZURE_SUBSCRIPTION_ID
variabel lingkungan ke ID langganan Anda. (Anda dapat menjalankan perintah az account show dan mendapatkan ID langganan Anda dariid
properti dalam output):Jalankan skrip:
python provision_vm.py
Proses penyediaan membutuhkan waktu beberapa menit untuk menyelesaikannya.
5. Verifikasi sumber daya
Buka portal 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
rem Provision the resource group
az group create -n PythonAzureExample-VM-rg -l westus2
rem 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
rem Provision a public IP address
az network public-ip create -g PythonAzureExample-VM-rg -n python-example-ip ^
--allocation-method Dynamic --version IPv4
rem 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
rem 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 menunjukkan penggunaan.
Lihat juga
- Contoh: Membuat grup sumber daya
- Contoh: Cantumkan 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
- Gunakan Azure Managed Disks dengan mesin virtual
- Menyelesaikan survei singkat tentang SDK Azure untuk Python
Sumber daya berikut berisi contoh yang lebih komprehensif menggunakan Python untuk membuat mesin virtual:
- Membuat dan mengelola komputer virtual Windows di Azure menggunakan Phyton. Anda dapat menggunakan contoh ini untuk membuat VM Linux dengan mengubah parameter
storage_profile
. - Sampel Azure Virtual Machines Management - 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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk