zoukankan      html  css  js  c++  java
  • 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,如下图。

      

      

      同时导入Runbook。Runbook的下载地址:

      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)等相关水印版权信息,否则视为侵犯原创版权行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。

  • 相关阅读:
    阅读《最后期限》有感(1)
    软件工程课程改进建议
    团队开发第二次冲刺第七天
    返回一个二维整数数组中最大联通子数组的和
    大道至简阅读笔记三
    大道至简阅读笔记二
    大道至简阅读笔记一
    团队冲刺阶段二第十次站立会议
    对软工课程的意见建议
    团队冲刺阶段二第九次站立会议
  • 原文地址:https://www.cnblogs.com/threestone/p/4761705.html
Copyright © 2011-2022 走看看