使用Azure Automation来自动化处理各种重复的耗时的云管理任务从而帮助云运维人员提升效率,帮助降低运营成本。

具体相关的介绍以及怎样利用Azure Automation来完成定期开关虚拟机(ASM)定期删除存储账号在Zhanglei老师的blog里有详细的指导(http://www.cnblogs.com/threestone/category/725902.html)。今天我们在这个基础上讲一下怎么用Azure Automation开关ARM的虚拟机。

首先,让我们先明确以下的概念:

1. 中国的Azure目前提供的Automation是一个ASM的产品,我们只能从老的portal https://manage.windowsazure.cn找到这个产品并且管理automation本身。当然我们也可以使用powershell管理ASM的命令来管理Automation。

2. 用Automation管理Azure资源的本质是,用powershell的工作流来管理Azure资源。所以,我们不但可以用它来管理ASM的资源也可以用它来管理ARM的资源。比如讲,我们可以定时开关ASM的虚拟机也可以定时开关ARM的虚拟机

接下来,我们介绍如何在老的portal里使用Azure Automation来定期开虚拟机。

1. 创建一个Automation account,名字是meowmeowdemo。

2. 创建成功后,点击meowmeowdemo的name,进入主页面如下

3. 点击ASSETS,进入一个很重要的页面

在本文开始的时候,我们提过“用Automation管理Azure资源的本质是,用powershell的工作流来管理Azure资源”. 所以,我们需要做两件事:

  • 创建一个assets来存入一个azure的账号和密码以供powershell工作流登录Azure使用。

使用Assets来创建的好处是,密码不再是被明文保存在portal里面,安全性得到了保证

  • 检查我们将要使用的管理ARM资源的powershell命令模块是不是已经被加载到automation后台(在99.9%的情况下,这一步都已经由后台完成了.)

开关ARM虚拟机需要使用的命令是 Start-AzureRMVM 和 Stop-AzureRMVM,相关的模块是AZURERM.COMPUTE

有时间的话,大家可以点一下每个module,每个模块支持的azure powershell命令都会列出来的。

那剩下的0.1%模块没有加载怎么办呢?别急,页面底部的”IMPORT MODULE”就是用来干这个的

4.现在点击RUNBOOKS,进入页面后再点击左下角的NEW,开始创建真正运行的用来开关机的powershell脚本

这里我们可以选择从Gallery里创建。为什么呢?因为世界上已经有很多的聪明人写了很多脚本,我们不需要再重复造相同的轮子了。

不过切记一点,大多数Gallery脚本是写给Azure Global的。在把脚本运行于azure中国前我们需要做一点改动,比方讲,把登录azure的命令从

Login-AzureRmAccount -Credential $Cred -TenantId $TenantID;

改为

Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $cred

这里为了简单起见,我们从点击底部的“Import”从本地import一个脚本可以实现定期开机的脚本

Import成功后还需要在runbook页面点击底部的Publish按钮。脚本只有在publish后才能运行

脚本的内容如下:

######StartVMs#####
<#
.DESCRIPTION
Start VM under one subscription via VM Name three input parameters are required $vmlist; $SubscriptionID; $meowmeow vmlist must be listed like "resourcegroup1/vm1name;resourcegroup1/vm2name;resourcegroup2/vm1name"
SubscriptionID is the subscription where vm stays meowmeow is the azure account login credential
#> workflow StartVMs
{ #Get the credential with the above name from the Automation Asset store
$Cred = Get-AutomationPSCredential -Name "meowmeow" ;
if(!$Cred) {
Throw "Could not find an Automation Credential Asset . Make sure you have created one in this Automation Account."
} #Get the vmlist with the above name from the Automation Variable store
$vmlist = Get-AutomationVariable -Name "vmlist" ;
if(!$vmlist) {
Throw "Could not find an Automation Variable Asset . Make sure you have created one in this Automation Account."
} #Get the SubscriptionID with the above name from the Automation Asset store
$SubscriptionID = Get-AutomationVariable -Name "SubscriptionID" ;
if(!$SUbscriptionID) {
Throw "Could not find an Automation Variable Asset . Make sure you have created one in this Automation Account."
}
$server = Get-AutomationVariable –Name ‘ServerName’ #Connect to your Azure Account
Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $Cred
Select-AzureRmSubscription -SubscriptionId $SubscriptionID $vmnames = $vmlist -split ";" foreach($vm in $vmnames)
{ Start-AzureRmVM -ResourceGroupName $vm.split("/")[] -Name $vm.split("/")[]
} }

5. 在运行这个脚本之前,我们还需要做如下准备工作。脚本要求的输入参数如下:

   three input parameters are required

   $vmlist; $SubscriptionID; $meowmeow

   vmlist must be listed like "resourcegroup1/vm1name;resourcegroup1/vm2name;resourcegroup2/vm1name"
SubscriptionID is the subscription where vm stays meowmeow is the azure account login credential

  

其中用户登录azure的用户名和密码我们在上面第三步就做好了,剩下的一个是虚拟机的列表,一个是订阅的ID。这两个也需要在ASSETS的页面按要求创建

6. 配置好参数后,我们还需要创建Schedule。同样我们可以在ASSETS页面创建这个schedule

7. 最后我们把schedule和第5步创建的runbook脚本链接起来

8.最后,我们测试一下,yeah!!!!!

通过这种方式创建的automation 脚本灵活性很好,如果有新的vm也需要加入自动化开机的行列,只要在Assets vmlist里面加入新vm就好了。脚本的本身并不需要有任何变化。

大家可以试着遵循同样的步骤创建一个自动关机的runbook,还可以借鉴zhanglei老师的代码加入对周末和节假日的验证,如果在周末和节假日我们就不需要自动启动虚机

NOTE:如果你有几百个虚机要定期开关机的话,这段脚本不推荐哦,一个个启动太慢啦,下次有时间写一下该怎么实现

Step by Step 用Azure Automation 来开虚机(ARM)的更多相关文章

  1. 利用Azure Automation实现云端自动化运维(4)

    在上述基本准备工作做完后,wo们看看如何实现利用Azure Automation实现定时自动开关机的操作,这种场景非常适合Dev/Test环境,因为Azure的虚拟机是按照分钟收费的,所以我们可以在开 ...

  2. 在Azure Ubunt Server 14.04虚机中使用Deep-Visualization-Toolbox

      参考网站 a)   https://zhuanlan.zhihu.com/p/24833574?utm_source=tuicool&utm_medium=referral b)   ht ...

  3. Azure: 给 ubuntu 虚机挂载数据盘

    在 azure 上创建的虚机默认会分配两个磁盘,分别是系统盘和一个临时磁盘.如果我们要在系统中安装使用 mysql 等软件,需要再创建并挂载单独的数据盘用来保存数据库文件.这是因为临时磁盘被定义为:用 ...

  4. Terraform:创建 Azure 虚机

    笔者在前文<Terraform 简介>中简单介绍了 Terraform 相关的概念,本文让我们使用 Terraform 在 Azure 上创建一个虚机,以此来直观体验一下 Terrafor ...

  5. Azure Automation (3) 定期将某个Azure订阅下的所有虚拟机开关机

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 在笔者之前的文章中,我们介绍了使用Azure Automation ...

  6. Azure Automation (4) 按照Azure虚拟机的机器名,设置开关机

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China服务. 在有的时候,我们不需要将所有的虚拟机进行开关机. 本文介绍的脚 ...

  7. 利用Azure Automation实现云端自动化运维(1)

    Azure Automation是Azure上的一个自动化工作流引擎,基于Powershell,来帮助用户简化,集成和自动化Azure上的运维工作,例如: 实现定时开关虚拟机,节约成本 实现定时创建删 ...

  8. enode框架step by step之saga的思想与实现

    enode框架step by step之saga的思想与实现 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode enode ...

  9. enode框架step by step之Staged event-driven architecture思想的运用

    enode框架step by step之Staged event-driven architecture思想的运用 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件 ...

随机推荐

  1. NodeJS 阻塞/非阻塞

    阻塞实例 var fs = require('fs'); var data = fs.readFileSync('test.txt') console.log(data.toString()); co ...

  2. Ubuntu16.04安装opencv for python/c++

    Ubuntu16.04安装opencv for python/c++ 网上关于opencv的安装已经有了不少资料,但是没有一篇资料能让我一次性安装成功,因此花费了大量时间去解决各种意外,希望这篇能给一 ...

  3. HTC开放Vive Tracker代码啦!

    (52VR网2017年5月2日)HTC正在为工作室创建的Vive Tracker项目发布教程和项目文件,作为VR开发人员的新资源. 该公司希望能够让更多的开发者能够在开发Vive VR耳机时制作自己的 ...

  4. eclipse 创建maven模块

    先创建一个聚合模块. 勾选Create a simple project 点击finish . 看到已经创建好了这个聚合. 接下来我们创建子模块.pay-hk  pay-web 两个字模块,前面一个是 ...

  5. IOS中的通知NSNotification

    类似于Android中的广播接收者发送者 1.一般完整的通知包含三个属性 -(NSString *)name ;//通知的名称 -(id)object ;//通知发布者(是谁要发布通知) -(NSDi ...

  6. Android NDK开发之C调用Java及原生代码断点调试(二)

    上一篇中,我们主要学习了Java调用本地方法,并列举了两大特殊实例来例证我们的论据,还没学习的伙伴必须先去阅读下,本次的学习是直接在上一篇的基础上进行了.点击:Android NDK开发之从Java与 ...

  7. Java学习笔记——排序算法之希尔排序(Shell Sort)

    落日楼头,断鸿声里,江南游子.把吴钩看了,栏杆拍遍,无人会,登临意. --水龙吟·登建康赏心亭 希尔算法是希尔(D.L.Shell)于1959年提出的一种排序算法.是第一个时间复杂度突破O(n²)的算 ...

  8. MyBatis之级联小结

    在这之前我们知道了MyBatis为我们提供了三种级联:一对一关系(assocation).一对多关系(collection).鉴别器(discriminator).在最后一个鉴别器例子中,看到了当层级 ...

  9. Spring Cloud 注册中心Eureka

    一.简介 最近在看Spring Cloud微服务,接下来的时间和大家一起分享我所看到的,公司现在用的是dubbo ,之后有时间也去了解了解dubbo的源码.与dubbo相比较,Spring Cloud ...

  10. 【JavaScript中的this详解】

    前言 this用法说难不难,有时候函数调用时,往往会搞不清楚this指向谁?那么,关于this的用法,你知道多少呢? 下面我来给大家整理一下关于this的详细分析,希望对大家有所帮助! this指向的 ...