Örnek: Sanal makine oluşturmak için Azure kitaplıklarını kullanma
Bu makalede, Linux sanal makinesi içeren bir kaynak grubu oluşturmak için Python betiğinde Azure SDK yönetim kitaplıklarını kullanmayı öğreneceksiniz.
Bu makaledeki tüm komutlar, not edilmediği sürece Linux/macOS bash ve Windows komut kabuklarında aynı şekilde çalışır.
Eşdeğer Azure CLI komutları bu makalenin devamında listelenmiştir. Azure portalını kullanmayı tercih ediyorsanız bkz. Linux VM oluşturma ve Windows VM oluşturma.
Not
Kod aracılığıyla sanal makine oluşturmak, sanal makinenin gerektirdiği bir dizi başka kaynak sağlamayı içeren çok adımlı bir işlemdir. Bu tür bir kodu komut satırından çalıştırıyorsanız, atlamayı seçtiğiniz herhangi bir ayar için bu ikincil kaynakları otomatik olarak varsayılan olarak sağlayan komutu kullanmak az vm create
çok daha kolaydır. Tek gerekli bağımsız değişkenler bir kaynak grubu, VM adı, görüntü adı ve oturum açma kimlik bilgileridir. Daha fazla bilgi için bkz . Azure CLI ile hızlı bir sanal makine oluşturma.
1: Yerel geliştirme ortamınızı ayarlama
Henüz yapmadıysanız, bu kodu çalıştırabileceğiniz bir ortam ayarlayın. Aşağıda bazı seçenekleri görebilirsiniz:
Python sanal ortamını yapılandırma. Sanal ortamı yerel olarak veya Azure Cloud Shell'de oluşturabilir ve kodu orada çalıştırabilirsiniz. Kullanmaya başlamak için sanal ortamı etkinleştirdiğinizden emin olun.
Conda ortamı kullanın.
Visual Studio Code veya GitHub Codespaces'ta Geliştirme Kapsayıcısı kullanın.
2: Gerekli Azure kitaplık paketlerini yükleme
Bu örnekte kullanılan yönetim kitaplıklarını listeleyen bir requirements.txt dosyası oluşturun:
azure-mgmt-resource
azure-mgmt-compute
azure-mgmt-network
azure-identity
Ardından, sanal ortamın etkinleştirildiği terminal veya komut isteminizde requirements.txt listelenen yönetim kitaplıklarını yükleyin:
pip install -r requirements.txt
3: Sanal makine oluşturmak için kod yazma
Aşağıdaki kodla provision_vm.py adlı bir Python dosyası oluşturun. Açıklamalar ayrıntıları açıklar:
# 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}")
Kodda kimlik doğrulaması
Bu makalenin devamında, örnek kodu çalıştırmak için Azure CLI ile Azure'da oturum açarsınız. Hesabınızın Azure aboneliğinizde kaynak grupları ve ağ ve işlem kaynakları oluşturma izinleri varsa kod başarıyla çalıştırılır.
Bu kodu üretim betiğinde kullanmak için ortam değişkenlerini kimlik doğrulaması için hizmet sorumlusu tabanlı bir yöntem kullanacak şekilde ayarlayabilirsiniz. Daha fazla bilgi edinmek için bkz . Azure hizmetleriyle Python uygulamalarının kimliğini doğrulama. Hizmet sorumlusunun, aboneliğinizde kaynak grupları ve ağ ve işlem kaynakları oluşturmak için yeterli izinlere sahip olduğundan emin olmak için Azure'da uygun bir rol atamanız gerekir; örneğin, aboneliğinizdeki Katkıda Bulunan rolü.
Kodda kullanılan sınıflar için başvuru bağlantıları
- DefaultAzureCredential (azure.identity)
- ResourceManagementClient (azure.mgmt.resource)
- NetworkManagementClient (azure.mgmt.network)
- ComputeManagementClient (azure.mgmt.compute)
4. Betiği çalıştırın
Henüz yapmadıysanız Azure CLI kullanarak Azure'da oturum açın:
az login
Ortam değişkenini
AZURE_SUBSCRIPTION_ID
abonelik kimliğiniz olarak ayarlayın. (az account show komutunu çalıştırabilir ve çıkıştaki özelliğindenid
abonelik kimliğinizi alabilirsiniz:Betiği çalıştırın:
python provision_vm.py
Sağlama işleminin tamamlanması birkaç dakika sürer.
5. Kaynakları doğrulayın
Azure portalını açın, "PythonAzureExample-VM-rg" kaynak grubuna gidin ve sanal makineyi, sanal diski, ağ güvenlik grubunu, genel IP adresini, ağ arabirimini ve sanal ağı not edin.
Az vm list komutuyla VM'nin mevcut olduğunu doğrulamak için Azure CLI'yı da kullanabilirsiniz:
az vm list --resource-group PythonAzureExample-VM-rg
Eşdeğer Azure CLI komutları
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
Kapasite kısıtlamalarıyla ilgili bir hata alırsanız farklı bir boyut veya bölge deneyebilirsiniz. Daha fazla bilgi için bkz . SKU'nun kullanılamadığı hataları düzeltme.
6: Kaynakları temizleme
Bu makalede oluşturduğunuz sanal makineyi ve ağı kullanmaya devam etmek istiyorsanız kaynakları yerinde bırakın. Aksi takdirde az group delete komutunu çalıştırarak kaynak grubunu silin.
Kaynak grupları aboneliğinizde devam eden herhangi bir ücret ödemez, ancak sanal makineler gibi grupta yer alan kaynaklar ücretlendirilmeye devam edebilir. Etkin olarak kullanmadığınız tüm grupları temizlemek iyi bir uygulamadır. --no-wait
bağımsız değişkeni, işlemin bitmesini beklemek yerine komutun hemen döndürülmesini sağlar.
az group delete -n PythonAzureExample-VM-rg --no-wait
Bir kaynak grubunu koddan silmek için yöntemini de kullanabilirsiniz ResourceManagementClient.resource_groups.begin_delete
. Örnek: Kaynak grubu oluşturma içindeki kod kullanımı gösterir.
Ayrıca bkz.
- Örnek: Kaynak grubu oluşturma
- Örnek: Abonelikteki kaynak gruplarını listeleme
- Örnek: Azure Depolama oluşturma
- Örnek: Azure Depolama kullanma
- Örnek: Web uygulaması oluşturma ve kod dağıtma
- Örnek: Veritabanı oluşturma ve sorgulama
- Sanal makinelerle Azure Yönetilen Diskler kullanma
- Python için Azure SDK hakkında kısa bir anket tamamlama
Aşağıdaki kaynaklar, sanal makine oluşturmak için Python kullanan daha kapsamlı örnekler içerir:
- Python kullanarak Azure'da Windows VM'leri oluşturun ve yönetin. Parametresini değiştirerek
storage_profile
Linux VM'leri oluşturmak için bu örneği kullanabilirsiniz. - Azure Sanal Makineler Yönetim Örnekleri - Python (GitHub). Örnekte VM başlatma ve yeniden başlatma, VM'yi durdurma ve silme, disk boyutunu artırma ve veri disklerini yönetme gibi daha fazla yönetim işlemi gösterilmektedir.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin