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. Win32 API编程:CHAR TCHAR WCHAR的区别

    #ifdef   UNICODE               typedef   wchar_t   TCHAR;     #else               typedef   unsigned ...

  2. iis和apache共享80端口

    Windows server 2003服务器上安装有默认 IIS 6和Apache两个服务器,IIS运行的一个.net程序,apache运行php程序,现在想让它们同时都能通过80端口访问,设置起来还 ...

  3. python局部变量引用问题

    a = [1, 2] b = 'Immutable' def test(): # global b print(a) a.append('asd') b = b + 'asd' # 当只是引用变量b的 ...

  4. Android LCD(一):LCD基本原理【转】

    本文转载自:http://blog.csdn.net/longxiaowu/article/details/24787597 关键词:Android LCD TFT 液晶 偏光片 彩色滤光片  背光 ...

  5. linux下ipython的安装

    第一种:ipython源码安装ipython的源码下载页面为:https://pypi.python.org/pypi/ipython 或者是到git页面下载:https://github.com/i ...

  6. spring配置hibernate映射文件-------通配符

    <!-- 这里一定要注意是使用spring的mappingLocations属性进行通配的 -->      <property name="mappingLocation ...

  7. 查找和删除倒数第n个节点的问题

    class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } public class NthNodeFromEnd ...

  8. AODH: ALARM EVENTS IN OPENSTACK

    AODH是从Ceilometer分离出来的一个子项目,开始于OpenStack Liberty,用来提供alarm机制. 除了之前Ceilometer有的基于sample的警报机制,AODH还添加了基 ...

  9. 通过YUM命令查找对应命令是通过何种软件提供的

    # yum whatprovides [命令]

  10. 使用java代码打开特定网页

    第一种方法的代码如下所示: import java.io.File; public class Test04 { public static void main(String[] args) { // ...