通过Python查看Azure VM的状态
Azure的管理平台采用Restful API的方式实现管理。比如获取VM的管理API的各种操作的文档请参考:
https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/get
微软发布的各种SDK,PowerShell或CLI都是基于这些API进行的封装,方便操作。
本文将采用Python来获取Azure VM的状态信息。
1 安装Python的Azure模块
Python的Azure模块的Github链接:
https://github.com/gbowerman/azurerm
如果需要管理China的Azure,安装Stan Peng修改过的模块:
pip install mcazurerm
2 创建Azure的Service Principle
Azure的Service Principle就类似一个用户,可以对Azure的资源进行管理。
采用Azure CLI 2.0的具体命令如下:
az ad sp create-for-rbac --name hwsp –password xxxx
获得输出:
{
"appId": "xxxx",
"displayName": "hwsp",
"name": "http://hwsp",
"password": "xxxx",
"tenant": "xxxx"
}
查看:
az role assignment list --assignee xxxx [
{
"id": "/subscriptions/xxxx/providers/Microsoft.Authorization/roleAssignments/xxxx",
"name": "xxxx",
"properties": {
"principalId": "xxxx",
"principalName": "http://hwsp",
"roleDefinitionId": "/subscriptions/xxxx/providers/Microsoft.Authorization/roleDefinitions/xxxx",
"roleDefinitionName": "Contributor",
"scope": "/subscriptions/xxxx"
},
"type": "Microsoft.Authorization/roleAssignments"
}
]
3 添加创建get_vm_instanceview模块
在原有的mcazurerm中没有查看instanceview的模块,根据前文提到的文档,添加如下:
from mcazurerm import * def get_vm_instanceview(access_token, subscription_id, resource_group, vm_name):
endpoint = ''.join([azure_rm_endpoint,
'/subscriptions/', subscription_id,
'/resourceGroups/', resource_group,
'/providers/Microsoft.Compute/virtualMachines/', vm_name,
'?$expand=instanceView'
'&api-version=', COMP_API])
return do_get(endpoint, access_token)
4 获取Azure VM状态
通过如下代码获取Azure VM状态:
import json
import sys
import mcazurerm
import instanceview try:
with open('azurermconfig.json') as config_file:
config_data = json.load(config_file)
except SystemError:
sys.exit('Error: Expecting azurermconfig.json in current folder') tenant_id = config_data['tenantId']
app_id = config_data['appId']
app_secret = config_data['appSecret']
subscription_id = config_data['subscriptionId'] access_token = mcazurerm.get_access_token(tenant_id, app_id, app_secret) vminstanceview = instanceview.get_vm_instanceview(access_token,sub['subscriptionId'],"test01","hwcent01") print 'VM Name: ',vminstanceview['name']
print 'VM Resource Group: ',vminstanceview['id'].split('/')[4]
print 'VM Location: ',vminstanceview['location']
print "VM Status: ",vminstanceview['properties']['instanceView']['statuses'][1]['displayStatus']
Azurermconfig.json的文件格式请参考:
https://github.com/gbowerman/azurerm/blob/master/examples/azurermconfig.json.tmpl
过具体输出结果如下:
VM Name: hwcent01
VM Resource Group: test01
VM Location: chinanorth
VM Status: VM deallocated
总结:
Python通过添加模块,实现获取Azure VM运行状态。
通过Python查看Azure VM的状态的更多相关文章
- Azure VM对远程桌面登录的支持-示例
我们在开发Windows Azure的应用程序,虽然在大部分的情况下都可以使用Azure Emulator模拟器来模拟在云端计算节点(Azure VM)的执行结果,但是并不能100%模拟真正在Azur ...
- 了解 Azure VM 的系统重启
有时 Azure 虚拟机 (VM) 可能重启,即使没有明显原因,也没有证据表明用户发起重启操作. 本文列出了可导致 VM 重启的操作和事件,并针对如何避免意外重启问题或减少该问题影响提供见解. 配置 ...
- Azure VM从ASM迁移到ARM(一)
Azure的IaaS有ASM和ARM两个版本,ARM的一些优点前面已经聊过很多了.ARM有更细的管理颗粒度,更多的功能等. 如果想从ASM迁移到ARM,目前有两类方法可以实现: 1. Azure平台支 ...
- 通过PowerShell命令给Azure VM添加CustomScriptExtension
Azure的VM提供了一种管理工具叫Azure VM Extension.它实现了一些管理虚拟机所需要的重要功能,比如:重设密码.设置RDP参数.以及许多其他关键的功能,并且Azure VM一直在添加 ...
- Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP
<Windows Azure Platform 系列文章目录> 笔者在之前的工作中,有客户提出想一次性查看Azure订阅下的所有Azure VM的Public IP和Private IP. ...
- Windows Azure Virtual Machine (29) 修改Azure VM 数据磁盘容量
<Windows Azure Platform 系列文章目录> 当我们使用Windows Azure管理界面,创建Azure虚拟机的时候,默认挂载的磁盘是固定大小的 1.比如我创建1个Wi ...
- 将 Azure VM 迁移到 Azure 中的托管磁盘
Azure 托管磁盘无需单独管理存储帐户,从而简化了存储管理. 还可以将现有的 Azure VM 迁移到托管磁盘,以便受益于可用性集中 VM 的更佳可靠性. 它可确保可用性集中不同 VM 的磁盘完全相 ...
- 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据
一.JDB调试 在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种. JDB ...
- [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析
云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析 在虚拟机创建完成之后,CPU和内存的配置等等基本上是一目了然的.如果不考虑显卡性能,一台机器最重要的性能瓶颈就是硬盘. ...
随机推荐
- 键盘keyCode
字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L 76 U 85 ...
- CMD 删除脚本
CMD 删除脚本 forfiles /p D:\BACKUP\WindowsImageBackup /s /m *.* /d -14 /c "cmd /c del @file"; ...
- mysql下merge分表
1.merge简介分表就是把N条记录的表,分成若干个分表,各个分表记录的总和仍为N. 分表的方法有很多,用merge来分表,是最简单的一种方式.merge是mysql的一种存储引擎,它把一组MyISA ...
- php数组函数-array_intersect()
array_intersect()函数返回两个或多个数组的交集数组 结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中 的值,键名保留不变 array_intersect(array1, ...
- 四、golang内置函数、递归、闭包、数组切片和map
一.总体内容 1.内置函数.递归函数.闭包 2.数组和切片 3.map数据结构 4.package介绍 一.内置函数 注意:值类型用new来分配内存,引用类型用make来分配内存 1.close:主要 ...
- Python 循环语句(while, for)
# while的使用 # 要注意些循环的时候,要考虑好循环的结束 # 考虑循环结束的方法有2种: # 1.考虑在循环体里改变while 的条件 # 2.在循环体通过break 语句跳出循环 # 方法1 ...
- setWindowFlags的使用
setWindowFlags的使用 setWindowFlags(Qt::FramelessWindowHint); //隐藏标题栏 setWindowFlags(Qt::WindowCloseBu ...
- 读写properties文件方法
按key读取properties文件中的value public static String readSystemConfig(String key){ Properties prop = new P ...
- 使用<s:property value="4"/>是报错
报错的情况是 在jsp中引入标签 <%@ taglib uri="/struts-tags" prefix="s" %> 项目中也有ognl.jar ...
- LeetCode OJ:Count and Say(数数)
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...