使用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之fs的读写删移监

    NodeJs版本:4.4.4 fs 文件系统模块是一个封装了标准的 POSIX 文件 I/O 操作的集合.Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本. 图片的复制与粘贴 创建 ...

  2. 【内网渗透】MSF的exploit和pyload的基础使用

    1.连接MSF root@kali:~# msfconsole 2.显示所有攻击模块 msf > show exploits |more 3.寻找攻击模块 msf > search ms0 ...

  3. Java实现压缩文件与解压缩文件

    由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...

  4. linux性能分析及调优

    第一节:cpu 性能瓶颈 计算机中,cpu是最重要的一个子系统,负责所有计算任务: 基于摩尔定律的发展,cpu是发展最快的一个硬件,所以瓶颈很少出现在cpu上: 我们线上环境的cpu都是多核的,并且基 ...

  5. linux性能之iostat

    在使用linux系统的过程中,总是可能需要当前io性能的状态信息是怎么样?这里就就是一下iostat,可以通过iostat来初步查看io的状态信息. 1.常用方式 iostat -xdk 1 10 或 ...

  6. SOA 下实现分布式 调用 cxf+ webService +动态调用

    近期项目间隙 自学了  webservice   一下 是我写的  一个demo 首先我们在web.xml 里配置如下 <servlet> <servlet-name>CXFS ...

  7. 简析ASP.NET WebApi的跨域签名

    之前的文章写了关于WebApi的跨域问题,当中的方法只是解决了简单请求的跨域问题而非简单请求的跨域问题则没有解决. 要弄清楚 CORS规范将哪些类型的跨域资源请求划分为简单请求的范畴,需要额外了解几个 ...

  8. 今天打补丁出问题了,害得我组长被扣了1k奖金。

    今天是第三次给mxdw打补丁和打包,外加公司高管说有一个东西必须要今天之内搞定外放. 我当时问策划为什么这么着急?策划说大佬决定的(这种做事方式真的很不习惯).我等屁民加班加点的搞事情,把功能搞出去了 ...

  9. spring cloud微服务搭建第一天

    martin fowler大神提出微服务的概念后,各种微服务的技术满天飞,现在用的比较多的是spring cloud和阿里的dubbo,由于dubbo 在16年10月份就停止更新了,这里我们讲解spr ...

  10. druid抛出的异常------javax.management.InstanceAlreadyExistsException引发的一系列探索

    最近项目中有个定时任务的需求,定时检查mysql数据与etcd数据的一致性,具体实现细节就不说了,今天要说的就是实现过程中遇到了druid抛出的异常,以及解决的过程 异常 异常详细信息 五月 05, ...