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的状态的更多相关文章

  1. Azure VM对远程桌面登录的支持-示例

    我们在开发Windows Azure的应用程序,虽然在大部分的情况下都可以使用Azure Emulator模拟器来模拟在云端计算节点(Azure VM)的执行结果,但是并不能100%模拟真正在Azur ...

  2. 了解 Azure VM 的系统重启

    有时 Azure 虚拟机 (VM) 可能重启,即使没有明显原因,也没有证据表明用户发起重启操作. 本文列出了可导致 VM 重启的操作和事件,并针对如何避免意外重启问题或减少该问题影响提供见解. 配置 ...

  3. Azure VM从ASM迁移到ARM(一)

    Azure的IaaS有ASM和ARM两个版本,ARM的一些优点前面已经聊过很多了.ARM有更细的管理颗粒度,更多的功能等. 如果想从ASM迁移到ARM,目前有两类方法可以实现: 1. Azure平台支 ...

  4. 通过PowerShell命令给Azure VM添加CustomScriptExtension

    Azure的VM提供了一种管理工具叫Azure VM Extension.它实现了一些管理虚拟机所需要的重要功能,比如:重设密码.设置RDP参数.以及许多其他关键的功能,并且Azure VM一直在添加 ...

  5. Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP

    <Windows Azure Platform 系列文章目录> 笔者在之前的工作中,有客户提出想一次性查看Azure订阅下的所有Azure VM的Public IP和Private IP. ...

  6. Windows Azure Virtual Machine (29) 修改Azure VM 数据磁盘容量

    <Windows Azure Platform 系列文章目录> 当我们使用Windows Azure管理界面,创建Azure虚拟机的时候,默认挂载的磁盘是固定大小的 1.比如我创建1个Wi ...

  7. 将 Azure VM 迁移到 Azure 中的托管磁盘

    Azure 托管磁盘无需单独管理存储帐户,从而简化了存储管理. 还可以将现有的 Azure VM 迁移到托管磁盘,以便受益于可用性集中 VM 的更佳可靠性. 它可确保可用性集中不同 VM 的磁盘完全相 ...

  8. 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据

    一.JDB调试        在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种.        JDB ...

  9. [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析

    云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析 在虚拟机创建完成之后,CPU和内存的配置等等基本上是一目了然的.如果不考虑显卡性能,一台机器最重要的性能瓶颈就是硬盘. ...

随机推荐

  1. dfs的返回条件

    用到dfs时要注意设置函数的返回条件,否则会导致一直wa!!!!!

  2. [Python]基于CNN的MNIST手写数字识别

    目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...

  3. MVC6 (ASP.NET5) 认证 (Asp.net identity) cookie模式 自定义认证

    1.Startup类的Configure方法中, app.UseIdentity(); 改为 app.UseCookieAuthentication(options => { options.A ...

  4. linux 安装jdk1.7 环境

    由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创 ...

  5. 搭建配置cacti,采集信息监控

    安装cactilamp环境[iyunv@Cacti ~]#service iptables stop //关闭防火墙服务[iyunv@Cacti ~]#chkconfig iptables off / ...

  6. Linux 一键安装 webmin/virtualmin

    Webmin是一个可运行于Linux/freebsd的web界面的主机管理系统,而Virtualmin是一个基于Webmin的虚拟主机管理模块. webmin官方站: http://www.webmi ...

  7. java进阶之-Maven,svn,git,maven合拼多个项目

    git的使用介绍(写很容易懂得哦) maven合拼多个项目(写得很好哦) MAVEN作用:统一开发规范与工具:统一管理jar包 1.下载MAVEN  下载绿色版的面安装 2.环境配置 eclipse想 ...

  8. jqgrid的scroll参数的使用

    scroll参数会影响addJSONData(data)方法的使用 存在scroll参数,addJSONData方法会往表格中追加数据: 不存在scroll参数时,addJSONData方法会覆盖表格 ...

  9. elasticsearch中如何手动控制全文检索结果的精准度

    1.为帖子数据增加标题字段 POST /forum/article/_bulk{ "update": { "_id": "1"} }{ &q ...

  10. QT 创建主窗口 MainWindow 实例

    1. 2. mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include & ...