Azure Automation (2) 定期删除存储账号中的文件
《Windows Azure Platform 系列文章目录》
本文介绍的是国内由世纪互联运维的Azure China。
本文是对笔者之前的文档Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage进行的补充。
希望笔者先阅读Azure Automation (1) 入门,对Azure Automation有基本的概念认识。
需求:
在之前的文档中Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage,
笔者介绍了使用SQL Server Job将SQL Database的备份文件bak备份到Azure Storage存储账户中。
但是这样会产生一个问题,随着这个SQL Job运行的时间越来越长,数据库备份文件bak会越来越多。如何设置Azure Automation计划任务,把老的数据库备份文件定期删除呢?
在这里笔者详细介绍一下相关的内容。
本文提到的技术细节有几点:
1.Azure AD账户,请参考:Windows Azure Active Directory (3) China Azure AD增加新用户
2.Azure订阅,请参考:Azure PowerShell (4) 使用PowerShell管理多个订阅
3.Azure存储账户名称,请参考:Windows Azure Storage (1) Windows Azure Storage Service存储服务
4.Azure存储账户container,请参考:
Windows Azure Storage (2) Windows Azure Storage Service存储服务之Blob详解(上)
Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)
Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature
本文的内容分为2个部分:
1.创建协同管理员Co-admin
2.定期删除存储账号的Runbook的编写
2.计划任务的调用
我们开始第一部分的内容,创建协同管理员Co-admin
1.首先我们根据之前的内容,Windows Azure Active Directory (3) China Azure AD增加新用户,我们增加一个协同管理员Co-Admin
设置这个共同管理员的目的是,这个Azure AD账户(newuser@leizha.partner.onmschina.cn)只是用来运行Azure Automation,没有其他的权限。
newuser@leizha.partner.onmschina.cn在运行Azure Automation的时候,需要验证newuser的账户和密码
如果我们设置服务管理员admin@leizha.partner.onmschina.cn来运行Azure Automation的话,
默认的Azure AD密码过期时间是60天,如果超过60天我们将admin账户密码修改,会在验证密码的时候出错。
所以我们需要单独一个Azure AD账户来运行Azure Automation。
为了保证Demo的可读性,我们创建一个单独的Azure AD账户automation@leizha.partner.onmschina.cn
第二部分,创建RunBook
2.我们创建一个Automation命令为LeiAutomation。点击该Automation,如下图:
3.页面跳转,我们点击RUNBOOKS,然后点击 IMPORT,如下图。
https://github.com/leizhang1984/AzureChinaAutomation/blob/master/ASM/RemoveStorageBlobXDaysOld.ps1
请注意在导入之前修改相应的参数,如下面的方框内容:
#设置Org ID
[parameter(Mandatory=$true)]
[String]$AzureOrgId="[YourAzureOrgID]", #设置Org ID的密码
[Parameter(Mandatory = $true)]
[String]$Password="[YourAzureOrgIDPassword]", #设置订阅名称
[Parameter(Mandatory = $true)]
[String]$AzureSubscriptionName="[YourSubscriptionName]", #设置存储账号
[Parameter(Mandatory = $true)]
[String]$StorageAccountName="[YourStorageAccount]", #设置Container Name
[Parameter(Mandatory = $true)]
[String]$ContainerName="[YourStorageAccountContainerName]", #设置过期时间
[Parameter(Mandatory = $true)]
[Int32]$DaysOld=[XDaysOld]
这样可以把某个存储账号下超过XDaysOld的旧数据删除,注意$DaysOld这个参数类型是Int32,赋值的参数不包含双引号。
4.修改参数完毕后,我们可以导入该RunBook。如下图:
5.导入完毕后,我们就可以查看到该RunBook
6.这里有重要的事情强调三遍:
Azure Automation RunBook的系统时间为UTC时区
Azure Automation RunBook的系统时间为UTC时区
Azure Automation RunBook的系统时间为UTC时区
我们的Automation RunBook的系统时间为UTC时区,我们需要修改为UTC时区为UTC+8北京时间
$ChinaTimeZone = [System.TimeZoneInfo]::FindSystemTimeZoneByID("China Standard Time")
$Start = [System.TimeZoneInfo]::ConvertTimefromUTC((get-date).ToUniversalTime(),$ChinaTimeZone)
"Starting: " + $Start.ToString("HH:mm:ss.ffffzzz")
7.记得导入Azure Automation RunBook之后,需要Publish这个RunBook
8.Publish之后,我们就可以在PUBLISHED里面看到发布的RUNBOOK项目
第三部分,设置计划任务的调度
9.执行成功后,我们可以在Schedule里面设置计划任务。我们创建一个新的计划任务,选择LINK TO A NEW Schedule,如下图:
10.首先命名这个Schedule(计划任务)
11.然后设置计划任务频率。如下图:
我们设置Daily每天运行一次,开始时间为2015-08-28早上11点。
这里有重要的事情强调三遍:
Azure Automation Schedule的系统时间为客户端本地时间,我的PC为北京时间,即UTC+8时区
Azure Automation Schedule的系统时间为客户端本地时间,我的PC为北京时间,即UTC+8时区
Azure Automation Schedule的系统时间为客户端本地时间,我的PC为北京时间,即UTC+8时区
12.最后设置这个RunBook的参数,图略。
这样我们就设计了计划任务,从2015-08-28上午11点开始执行Azure Automation,每天执行一次,没有过期时间。
这样Schedule(计划任务)每天就会清除Azure Storage Account的老旧数据。
第四部分,取消计划任务
当我们遇到10.1长假等情况,这些计划日程的脚本都不需要自动化运行。我们就可以通过Azure Automation计划日程中的取消连接功能。让这个Runbook不需要自动化执行。
我们可以点击Azure Automation,选择相应的Runbook,如下图:
点击上图的StartAllVM,然后页面跳转。
点击下图中的计划日程,取消连接按钮。
这样这个StartAllVM的任务就被取消了,将来不会继续执行。
等我们10-1放假回来后,我们可以针对这个StartAllVM和StopAllVM,在计划日程中新建连接即可。如下图:
本博-三石Blog(下文简称本博),在本博客文章结尾处右下脚未注明转载、来源、出处的作品(内容)均为本博原创,本站对于原创作品内容对其保留版权,请勿随意转载,如若真有需要的朋友可以发Mail联系我;转载本博原创作品(内容)也必须遵循“署名-非商业用途-保持一致”的创作共用协议,请务必以文字链接的形式标明或保留文章原始出处和博客作者(Lei Zhang)的信息,关于本博摄影作品请务必注意保留(www.cnblog.com/threestone)等相关水印版权信息,否则视为侵犯原创版权行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。
Azure Automation (2) 定期删除存储账号中的文件的更多相关文章
- Azure Automation (3) 定期将某个Azure订阅下的所有虚拟机开关机
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 在笔者之前的文章中,我们介绍了使用Azure Automation ...
- 如何永久删除git仓库中敏感文件的提交记录
如何永久删除git仓库中敏感文件的提交记录 参考: 1. https://help.github.com/articles/remove-sensitive-data/
- 【Azure 环境】由为存储账号(Storage Account)拒绝分配权限而引出的Azure 蓝图(Blueprint)使用问题
问题描述 当打开Azure存储账号(Storage Account)门户页面时,从 "访问控制(标识和访问管理)" 页面中发现有"拒绝分配"的功能,所以就思考, ...
- git忽略文件并删除git仓库中的文件
问题描述 不慎在创建.gitignore 文件之前的时候将文件push到了 git仓库,即使之后在.gitignore文件中写入新的过滤规则,这些规则也不会起作用的,git依然会对所有git仓库中的 ...
- 彻底删除 Git 项目中的文件(BFG Repo-Cleaner 用法)
一些时候由于开发初期经验不足和贪图方便, 会把一些不应该提交到 Git 的文件上传到 Github, 带来一系列安全问题, 更有可能是把一些大文件上传到 GitHub 上, 导致项目非常臃肿, 每次 ...
- 【菜鸟学Linux】Cron Job定期删除Log(日志)文件
以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长 ...
- git删除远程仓库中的文件夹
具体操作如下: git rm -r --cached .history #删除目录 git commit -m”删除.history文件夹” git push -r表示递归所有子目录,如果你要删 ...
- Git_添加、删除远端仓库中的文件
一.将文件添加到远端仓库 1.新增文件 2.使用git add 将文件添加到本地缓存中 3.使用git commit 将文件添加到本地仓库中 4.使用git push 将本地仓库中的修改同步到远端仓库 ...
- gradle 删除指定目录中的文件和目录
// 删除bakAPk下的所有非母包文件 task deleTask(type: Delete){ FileTree tree = fileTree(dir: bakPath) tree.each { ...
随机推荐
- 第十章 PageRank——Google的民主表决式网页排名技术
搜索引擎的结果取决于两组信息:网页的质量信息,这个查询与每个网页的相关性信息.这里,我们介绍前一个. 1.PageRank算法原理 算法的原理很简单,在互联网上,如果一个网页被很多其他网页所链接,说明 ...
- 记一次troubleshooting(一):奇慢的脚本
背景: 事情发生的时间是几年前,那时刚从windows server运维的部门调动过来,对linux和数据库还是处于一知半解的状态. 领导找过来说:前任遗留下来的问题你来调查一下,有个客户说他们的日次 ...
- PAT/查找元素习题集
B1004. 成绩排名 (20) Description: 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. Input: 每个测试输入包含1个测试用例,格式为: 第1行: ...
- 循序渐进做项目系列(2):最简单的C/S程序——消息异步调用与消息同步调用
上篇博客 循序渐进做项目系列(1):最简单的C/S程序——让服务器来做加法 实现了一个最简单的C/S程序,即让服务器来做加法.当时为了通俗易懂采用了消息异步调用的方式.今天我们要采用消息同步调用的方式 ...
- 解决Activator X for bundle Y is invalid 以及 Activator not found
如果没有发现编译期异常(就是导航栏项目上有红叉,红感叹号),那么Activator X for bundle Y is invalid和Activator not found这两个异常通常发生在ecl ...
- 推荐一些常用感觉不错的jQuery插件
转:http://www.cnblogs.com/v10258/p/3263939.html JQuery插件繁多,下面是个人在工作和学习中用到感觉不错的,特此记录. UI: jquery UI(官方 ...
- CSS:谈谈栅格布局
检验前端的一个基本功就是考查他的布局.很久之前圣杯布局风靡一时,这里就由圣杯布局开始,到最流行的bootstrap栅格布局. 圣杯布局 圣杯布局是一种三列布局,两边定宽,中间自适应: * { box- ...
- 源程序版本管理软件和项目管理软件,Github注册流程
目前流行的源程序版本管理软件和项目管理软件:Microsoft TFS,Github,SVN,Coding 各自的优缺点: Microsoft TFS: 优点: tfs核心的,是对敏捷,msf,cmm ...
- angularjs ng-option ie issue解决方案
最近遇见angularjs 在IE上当使用ng-options作为select的选项数据源,并且被套在ng-switch(ng-transclude)之类的,当angular上得ng-options数 ...
- 自动更新Chromium
Chromium 其实就是开发版本的Chrome, 即Chrome dev 版本.一般他的版本要比正式版的Chrome高两个及以上.比如正式版本现在是29,开发者版本已经是32了. 这表示很多新功能你 ...