Python 基于固定 IP 来命名 ARM 虚拟机的实现
问题描述
希望通过 Python 批量创建 ARM 虚拟机,并且在虚拟机命名时加入固定 IP 信息,方便管理维护。
问题分析
在创建 ARM 虚拟机之前,先创建固定 IP,然后获取固定 IP 地址,创建虚拟机时通过该 IP 地址格式化虚拟机名称。然后将固定 IP 配置到网络接口,基于该网络接口配置创建 ARM 虚拟机。
解决方法
模块安装
本文在 Windows Python 环境下进行测试,环境及模块依赖如下:
官网下载 msi 安装包,管理员命令行执行以下安装脚本
msiexec /package python-xxx.msi
使用 PIP 安装 Azure(需要 pip 9+ 支持,Python 2.7 环境已内置 pip 9+ 版本,不需更新)
pip install azure
安装程序依赖的模块
pip install azure-mgmt-network==0.30.0rc6
pip install azure-mgmt-compute==0.30.0rc6
pip install azure-mgmt-resource==0.30.2
如何查看模块的版本
pip install azure-mgmt-network==
Collecting azure-mgmt-network==
Could not find a version that satisfies the requirement azure-mgmt-network==
from versions: 0.20.0rc1, 0.20.0rc2, 0.20.0, 0.20.1, 0.30.0a1, 0.30.0rc1, 0.30.
rc2, 0.30.0rc3, 0.30.0rc4, 0.30.0rc5, 0.30.0rc6, 0.30.0)
No matching distribution found for azure-mgmt-network==
代码实现
from azure import *
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.network import NetworkManagementClient
from azure.mgmt.resource import ResourceManagementClient
from azure.common.credentials import UserPassCredentials
from azure.mgmt.compute.models import *
from msrest.serialization import *
credentials = UserPassCredentials(
"订阅账户",
"账户密码",
china=True
)
resource_client = ResourceManagementClient(
credentials,
'订阅 ID',
base_url = 'https://management.chinacloudapi.cn'
)
resource_client.providers.register('Microsoft.Compute')
resource_client.providers.register('Microsoft.Network')
compute_client = ComputeManagementClient(
credentials,
'订阅 ID',
base_url = 'https://management.chinacloudapi.cn'
)
network_client = NetworkManagementClient(
credentials,
'订阅 ID',
base_url = 'https://management.chinacloudapi.cn'
)
# Create Public IP
# result = network_client.public_ip_addresses.create_or_update(
# 'geogroup', #group_name
# 'geo-ip-01', #ip_name
# PublicIPAddress(
# location='China North',
# public_ip_allocation_method=IPAllocationMethod.static,
# idle_timeout_in_minutes=4,
# ),
# )
# result.wait()
public_ip_addresses = 'public_ip_name'
group_name = ''public_ip_group'
result = network_client.public_ip_addresses.get(group_name,public_ip_addresses)
print result.__dict__.items()
print result.ip_address
print result.ip_address.replace(".","-")
storageName = "storage account name"
vmName = "geovm-"+result.ip_address.replace(".","-")
print vmName
location = "chinanorth"
print location
os_profile = OSProfile(
computer_name= vmName,
admin_username='username',
admin_password='password,
)
print os_profile
hardware_profile = HardwareProfile(
vm_size=VirtualMachineSizeTypes.standard_a0
)
print hardware_profile
storage_profile = StorageProfile(
os_disk=OSDisk(
caching=CachingTypes.none,
create_option=DiskCreateOptionTypes.from_image,
name=vmName,
vhd=VirtualHardDisk(
uri='https://'+storageName+'.blob.core.chinacloudapi.cn/vhds/'+vmName+'.vhd',
),
),
)
storage_profile.image_reference = ImageReference(
publisher='Canonical',
offer='UbuntuServer',
sku='16.04.0-LTS',
version='latest'
)
print storage_profile
network_profile = NetworkProfile(
network_interfaces=[
NetworkInterfaceReference(
id="在新门户,网络接口-属性中获取资源 ID,该网络接口需要配置固定 IP",
),
],
)
print network_profile
params_create = VirtualMachine(
location=location,
os_profile=os_profile,
hardware_profile=hardware_profile,
network_profile=network_profile,
storage_profile=storage_profile,
)
print params_create
result_create = compute_client.virtual_machines.create_or_update(
group_name,
vmName,
params_create
)
result_create.wait()
print 'ok' 立即访问http://market.azure.cn
Python 基于固定 IP 来命名 ARM 虚拟机的实现的更多相关文章
- 学习Mysql过程中拓展的其他技术栈:设置linux虚拟机的固定ip和克隆linux虚拟机
一.设置linux虚拟机的固定ip 1. 安装好虚拟机后在菜单栏选择编辑→ 虚拟网络编辑器,打开虚拟网络编辑器对话框,选择Vmnet8 Net网络连接方式,随意设置子网IP,点击NAT设置页面,查看子 ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...
- 给虚拟机中的CentOS7配置固定ip
在虚拟机中安装完了CentOS7之后,使用了DHCP来获取ip,vmware的网络连接使用了NAT模式.但是在把Linux设置为固定ip地址后,虚拟机里的linux可以ping通全网段的ip地址,但是 ...
- VMware虚拟机固定IP后克隆出现无法访问网卡问题
通常我们现在都喜欢使用虚拟机进行实验,进行集群搭建等,在这个过程中,会遇到克隆虚拟机问题,当没有修改任何IP的情况下,克隆后,在逐台修改IP地址是没有问题的,但是,如果我们先设置了固定IP地址后,克隆 ...
- CentOS6.4虚拟机设置固定IP、安装JDK、Tomcat、Redis并部署web项目
一.CentOS设置固定IP 1.直接修改配置文件的方式,原文地址:http://www.cnblogs.com/zhja/p/3964159.html (1)首先获取你的GATEWAY 方便后面在c ...
- VMware虚拟机安装CentOS6.4、部署web项目全过程(设置固定IP、安装JDK、Tomcat、Redis、部署项目)
概述:该篇随笔介绍了在VMware上安装centOS.在centOS上安装JDK.安装Tomcat.安装Redis并部署项目的全过程,虽然参考了很多优秀的文章,但实践.整理.补充都很用心,若要复制粘贴 ...
- 虚拟机操作系统内设置固定IP以及克隆虚拟机
以下为我自己整理的克隆虚拟机和设置固定IP的方法,记录一下,以防忘记: 桥接模式网络配置 1.配置ip地址等信息在/etc/sysconfig/network-scripts/ifcfg-ens33文 ...
- 虚拟机环境搭建/修改VMware虚拟机固定IP
VMware Workstation安装CentOS7.0 详情教程: centos7.0下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64 ...
- VMWare虚拟机设置固定ip上网方法
转自:http://blog.csdn.net/cyberrusher/article/details/7269795 1. 在VMWare工具栏中打开:编辑--->虚拟机网络编辑器, 打开VM ...
随机推荐
- 【原创】nginx入门
一.简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点( ...
- Luogu P1131 [ZJOI2007]时态同步 树形DP
要自下向上调整,尽可能用一个道具修改多个: 搜的时候记录叶节点的最大深度,减一下就好了. #include<cstdio> #include<iostream> #includ ...
- mongodb的初步使用
一.mongodb简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产 ...
- PIE SDK线元素的绘制
1. 功能简介 在数据的处理中会用到线元素的绘制,目前PIE SDK支持ILineSymbol的线元素的绘制,LineSymbol对象是用于修饰线状对象的符号,它包括CartographicLineS ...
- linux下——java——new Font("Times New Roman", 0, 18)验证码图片变成字符
j'ava部署到了tomcat,发现了一个问题,我们登录的验证码出现了乱码,和字符 然而在windows服务器上,或者说我们本地的开发环境上面,则没有这种现象, 这是为什么? 查看源码,发现有一段代码 ...
- python 学习笔记一——Python安装和IDLE使用
好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...
- 里氏替换原则(Liskov Substitution Principle) LSP
using System; using System.Collections.Generic; using System.Text; namespace LiskovSubstitutionPrinc ...
- java集合常用操作
收集一些常用集合操作的代码,用于治疗健忘症,:) set转list //构造Map数据 Map<String, String> map = new HashMap<String, S ...
- 用PHP实现同一个帐号不允许同时登陆,只允许一个帐号登录?
数据库表 user_login_info 字段:id,user_ip,user_id,last_access_time user_id 做唯一性索引 1. 用户登录后 如果没有当前用户的数据,插入一条 ...
- pat03-树3. Tree Traversals Again (25)
03-树3. Tree Traversals Again (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue ...