Pythonを使用してAzureでVM作成するスクリプトが載ってる記事
Pythonを使用してAzureでVM作成するスクリプトが載ってる記事:
これは公式ドキュメントに記載があるものの二次制作の記事となります。
なにゆえ公式に乗っているのに改めてここに記載するかというと、
公式では概念の解説が記事の中心としてあり、ソースコードが散逸しているため、
ここにフルのソースコードとして乗っけることに価値を見出したからです。
Python を使用して Azure で Windows VM を作成および管理する
以上のコードにおいて、個人で取得・変更するSUBSCRIPTION_ID,GROUP_NAME ,LOCATION,VM_NAMEのみを変更すると、Azureにおいて仮想マシンが作成できる。
はじめに
これは公式ドキュメントに記載があるものの二次制作の記事となります。なにゆえ公式に乗っているのに改めてここに記載するかというと、
公式では概念の解説が記事の中心としてあり、ソースコードが散逸しているため、
ここにフルのソースコードとして乗っけることに価値を見出したからです。
参考
Python を使用して Azure で Windows VM を作成および管理する
作成スクリプト
create_azure_vm.py
from azure.common.credentials import ServicePrincipalCredentials from azure.mgmt.resource import ResourceManagementClient from azure.mgmt.compute import ComputeManagementClient from azure.mgmt.network import NetworkManagementClient from azure.mgmt.compute.models import DiskCreateOption SUBSCRIPTION_ID = 'subscription-id' GROUP_NAME = 'myResourceGroup' LOCATION = 'westus' VM_NAME = 'myVM' def get_credentials(): credentials = ServicePrincipalCredentials( client_id = 'application-id', secret = 'authentication-key', tenant = 'tenant-id' ) return credentials def create_resource_group(resource_group_client): resource_group_params = { 'location':LOCATION } resource_group_result = resource_group_client.resource_groups.create_or_update( GROUP_NAME, resource_group_params ) def create_availability_set(compute_client): avset_params = { 'location': LOCATION, 'sku': { 'name': 'Aligned' }, 'platform_fault_domain_count': 3 } availability_set_result = compute_client.availability_sets.create_or_update( GROUP_NAME, 'myAVSet', avset_params ) def create_public_ip_address(network_client): public_ip_addess_params = { 'location': LOCATION, 'public_ip_allocation_method': 'Dynamic' } creation_result = network_client.public_ip_addresses.create_or_update( GROUP_NAME, 'myIPAddress', public_ip_addess_params ) return creation_result.result() def create_vnet(network_client): vnet_params = { 'location': LOCATION, 'address_space': { 'address_prefixes': ['10.0.0.0/16'] } } creation_result = network_client.virtual_networks.create_or_update( GROUP_NAME, 'myVNet', vnet_params ) return creation_result.result() def create_subnet(network_client): subnet_params = { 'address_prefix': '10.0.0.0/24' } creation_result = network_client.subnets.create_or_update( GROUP_NAME, 'myVNet', 'mySubnet', subnet_params ) return creation_result.result() def create_nic(network_client): subnet_info = network_client.subnets.get( GROUP_NAME, 'myVNet', 'mySubnet' ) publicIPAddress = network_client.public_ip_addresses.get( GROUP_NAME, 'myIPAddress' ) nic_params = { 'location': LOCATION, 'ip_configurations': [{ 'name': 'myIPConfig', 'public_ip_address': publicIPAddress, 'subnet': { 'id': subnet_info.id } }] } creation_result = network_client.network_interfaces.create_or_update( GROUP_NAME, 'myNic', nic_params ) return creation_result.result() def create_vm(network_client, compute_client): nic = network_client.network_interfaces.get( GROUP_NAME, 'myNic' ) avset = compute_client.availability_sets.get( GROUP_NAME, 'myAVSet' ) vm_parameters = { 'location': LOCATION, 'os_profile': { 'computer_name': VM_NAME, 'admin_username': 'azureuser', 'admin_password': 'Azure12345678' }, 'hardware_profile': { 'vm_size': 'Standard_DS1' }, 'storage_profile': { 'image_reference': { 'publisher': 'MicrosoftWindowsServer', 'offer': 'WindowsServer', 'sku': '2012-R2-Datacenter', 'version': 'latest' } }, 'network_profile': { 'network_interfaces': [{ 'id': nic.id }] }, 'availability_set': { 'id': avset.id } } creation_result = compute_client.virtual_machines.create_or_update( GROUP_NAME, VM_NAME, vm_parameters ) return creation_result.result() if __name__ == "__main__": credentials = get_credentials() resource_group_client = ResourceManagementClient( credentials, SUBSCRIPTION_ID ) network_client = NetworkManagementClient( credentials, SUBSCRIPTION_ID ) compute_client = ComputeManagementClient( credentials, SUBSCRIPTION_ID ) create_resource_group(resource_group_client) input('Resource group created. Press enter to continue...') create_availability_set(compute_client) print("------------------------------------------------------") input('Availability set created. Press enter to continue...') creation_result = create_public_ip_address(network_client) print("------------------------------------------------------") print(creation_result) input('Press enter to continue...') creation_result = create_vnet(network_client) print("------------------------------------------------------") print(creation_result) input('Press enter to continue...') creation_result = create_subnet(network_client) print("------------------------------------------------------") print(creation_result) input('Press enter to continue...') creation_result = create_nic(network_client) print("------------------------------------------------------") print(creation_result) input('Press enter to continue...') creation_result = create_vm(network_client, compute_client) print("------------------------------------------------------") print(creation_result) input('Press enter to continue...')
コメント
コメントを投稿