Step by Step 用Azure Automation 来开虚机(ARM)
使用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)的更多相关文章
- 利用Azure Automation实现云端自动化运维(4)
在上述基本准备工作做完后,wo们看看如何实现利用Azure Automation实现定时自动开关机的操作,这种场景非常适合Dev/Test环境,因为Azure的虚拟机是按照分钟收费的,所以我们可以在开 ...
- 在Azure Ubunt Server 14.04虚机中使用Deep-Visualization-Toolbox
参考网站 a) https://zhuanlan.zhihu.com/p/24833574?utm_source=tuicool&utm_medium=referral b) ht ...
- Azure: 给 ubuntu 虚机挂载数据盘
在 azure 上创建的虚机默认会分配两个磁盘,分别是系统盘和一个临时磁盘.如果我们要在系统中安装使用 mysql 等软件,需要再创建并挂载单独的数据盘用来保存数据库文件.这是因为临时磁盘被定义为:用 ...
- Terraform:创建 Azure 虚机
笔者在前文<Terraform 简介>中简单介绍了 Terraform 相关的概念,本文让我们使用 Terraform 在 Azure 上创建一个虚机,以此来直观体验一下 Terrafor ...
- Azure Automation (3) 定期将某个Azure订阅下的所有虚拟机开关机
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 在笔者之前的文章中,我们介绍了使用Azure Automation ...
- Azure Automation (4) 按照Azure虚拟机的机器名,设置开关机
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China服务. 在有的时候,我们不需要将所有的虚拟机进行开关机. 本文介绍的脚 ...
- 利用Azure Automation实现云端自动化运维(1)
Azure Automation是Azure上的一个自动化工作流引擎,基于Powershell,来帮助用户简化,集成和自动化Azure上的运维工作,例如: 实现定时开关虚拟机,节约成本 实现定时创建删 ...
- enode框架step by step之saga的思想与实现
enode框架step by step之saga的思想与实现 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode enode ...
- enode框架step by step之Staged event-driven architecture思想的运用
enode框架step by step之Staged event-driven architecture思想的运用 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件 ...
随机推荐
- 为何PS出的RSS总和大于实际物理内存
使用ps aux 查看系统进程时,第六列即 RSS列显示的就是进程使用的物理内存. 可是把系统所有进程的该列相加时,得到的总和又远远高于系统实际的物理内存?这到底是怎么回事呢? 看一看linux是 ...
- oracle高效分页查询总结
本文参考链接:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html 探索查询语句: --分页参数:size = 20 page = 2 --没有or ...
- JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎
上篇博客我们聊了<JavaEE开发之SpringBoot工程的创建.运行与配置>,从上篇博客的内容我们不难看出SpringBoot的便捷.本篇博客我们继续在上篇博客的基础上来看一下Spri ...
- 【Netty】第一个Netty应用
一.前言 前面已经学习完了Java NIO的内容,接着来学习Netty,本篇将通过一个简单的应用来了解Netty的使用. 二.Netty应用 2.1 服务端客户端框架图 下图展示了Netty中服务端与 ...
- iOS 使用 UIMenuController 且不隐藏键盘的方法
iOS 使用 UIMenuController 且不隐藏键盘的方法 在键盘显示的时候使用 UIMenuController 弹出菜单,保持键盘显示且可输入的状态. 实现方法有 修改响应链(推荐) 遵循 ...
- scala读取jar包外配置文件的方式
在scala的开发过程中,经常会修改程序的参数,将这些参数放到配置文件中避免了重复编译,打包的过程 这里给出读取配置文件的三种方式 方式一: 这是最常见的读取配置文件方式 val postgprop ...
- 博弈论(Game Theory) - 03 - 前传之最大最小均衡
博弈论(Game Theory) - 03 - 前传之最大最小均衡 开始 最大最小均衡是由人冯·诺依曼和摩根斯坦提出.冯·诺依曼和摩根斯坦也被认为是博弈论的创始人. 冯·诺依曼提出的"最大最 ...
- 跨交换机相同vlan内的通信(trunk模式)
当一个公司的小型局域网内部,处于不同楼层的主机处在同一个虚拟局域网内,连接到不同的交换机上,这时候就需要相同虚拟局域网内部的主机进行跨交换机进行通信. 通过设置交换机之间相连接的端口开启trunk模式 ...
- 在iOS应用程序中使用Frida绕过越狱检测
阿里聚安全在之前的三篇博客中介绍了利用Frida攻击Android应用程序,整个过程仿佛让开发者开启上帝视角,在本篇博客中,我们将会介绍在iOS应用程序中使用Frida绕过越狱检测.即使 ...
- [刷题]算法竞赛入门经典 3-12/UVa11809
书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa11809:Floating-Point Numbers 代码: //UVa11 ...