AzureVM扩展之DSC

之前的博文介绍过AzureVM扩展的一些内容,AzureVM extension的国际版和国内版是有挺大区别的,从功能丰富程度来看,国际版目前是要比国内多很多内容的,且即便是相同的功能,可能版本号也不一致,像BGInfo啊,Access管理之类的比较常用,此外还有Docker扩展目前只在preview版本的新门户中才可以直观的看到,这次为了迎合前两篇PowerShell DSC的主题特地选择了AzureVM Extension中的DSC扩展来做介绍,也是想说明一下DSC这种强大编辑的自动化运维手段是可以无缝扩展到云端的。

###################################################################

想在Azure中使用DSC对VM进行维护,方法与本地基本一致,只是在执行时需要通过Azure的PowerShell方法来实现,下图我做了一个非常简单的实例,在本地安装web-server角色,并把ISE脚本保存为叫“111”的*.ps1文件:

之后执行publish-azurevmdscconfiguration,并制定ps1文件的本地路径,这条命令将会把本地的ps1脚本打包成azure可以识别的zip格式,然后上传到当前操作订阅中的blob容器内:

此时我在我的blob内找到了名为“windows-powershell-dsc”的容器,这个名字是默认的,当然你可以在上一步的publish中指定container名字,然后就可以在容器内看到下图中所示的zip包文件:

接下来就是让zip包里面的“期望的配置(DSC)”在目标vm中执行了,对于现有的虚机,可以使用set-azurevmdsctextension来实现,或者在新创建虚拟机中一并实现(具体方法请自行使用get-help查看):

在我的国际版订阅中可以看到当前DSC扩展的版本是1.9,如下图:

使用get-azurevmdscextensionstatus能够查看执行结果是否成功,如下图显示“successfully”:

登陆目标vm并查看web-server已经成功部署,如下图:

#################################################################

之前有提到过DSC能够将“环境配置”与“结构配置”拆分开,也就是“where”和“what”,下图中我按照此格式定义了只对“webserver“角色的虚拟机来安装IIS控制台,并且将默认网站disable掉,如下图,我把”结构配置(what)“保存为本地的*.ps1格式文件:

然后我在指定受影响的范围,即”环境配置(where)“,并保存为本地的*.psd1文件,如下图:

完成之后依旧使用publish-azurevmdscconfiguration,指定本地的ps1文件,之后确认已经成功将ps1脚本转换成zip格式上传到blob容器内,如下图:

下面就是具体执行步骤,set-azurevmdscextension,与上文不同的是增加了一个"-configurationdatapath"参数,这是用来指定本地psd1文件的,也就是”环境配置(where)“,以此来确保dsc执行范围是否有效,目标vm是否是我期望的”webrole“角色,如下图:

查看进度,会发现dsc的执行会有几个阶段,比如下图中处于”in progress“,稍后就会显示成功:

登陆目标vm可以打开IIS控制台,并且默认网站已经被禁用,如下图:

有关AzureVMextension DSC的日志其实是可以在目标vm中找到的,路径分别为"C:\Packages\Plugins\Microsoft.Powershell.DSC\版本号"和"C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\版本号",里面分别存放了DSC扩展功能所需要的文件以及每一次执行过程的详细日志,管理员可以从中来分析失败的原因,如下图:

#################################################################

PowerShell DSC在本地和Azure云端可以很灵活的部署与执行,而且据可靠消息透露在下一版的SCVMM中也会加入对DSC的支持,这样一来就不会出现被puppet和chef等开源项目抢风头的局面了:)

时间: 2025-01-04 04:19:02

AzureVM扩展之DSC的相关文章

DOM笔记(六):怎么进行JQuery扩展?

一.全局函数的扩展 全局函数是将独立的函数添加到JQuery的命名空间中区.在使用的时候,可以通过$.fucnName(param)或者jQuery.funcName(param)方式进行调用. 1.直接在JQuery上添加:在jQuery上添加一个全局函数sayHello jQuery.sayHello=function(name) { alert(name+"您好"); }; 调用方式: jQuery.sayHello("张子涵"); //或者用$.sayHel

Tomcat web.xml中定义了文件扩展名到MIME类型的映射

Tomcat在返回静态资源时,会根据资源文件的扩展名产生对应的content-type头(也即MIME类型)添加到response header中. 在Tomcat的web.xml规定了扩展名及相应MIME的映射(占了web.xml 87%的篇幅),如下: <!-- ===================== Default MIME Type Mappings =================== --> <!-- When serving static resources, Tom

PowerShell DSC(二)拆分配置信息

PowerShell DSC的配置文件支持"分离"的格式,这是什么意思呢?好比说企业有一套合规性要求,这套要求无论是对开发测试环境还是生产环境都是一致的,但是显然开发测试与生产环境的规模大小以及硬件配置等等是不一样的,这也就导致了在DSC中定义的内容可以分为"What"和"Where",即管理员要做什么和在哪做. ###################################################################

PowerShell 扩展工具第二波!

在DSC Pull 模式下获取Pull Client 在DSC Pull 模式下 我们无法通过界面获取当前Pull Server 配置适用节点计算机本次我们带来全新命令扩展:"PullServerNodestatus"在该扩展中包含一个全新命令Get-DSCPullClientStatus该命令将从指定的DSC Pull server 中获取当前应用配置的节点计算机,以及配置状态,刷新时间等. 使用前请安装该扩展Get-DSCPullClientStatus该命令只有一个参数 DSCP

PowerShell DSC(一)简单的推模式

最近因为公司业务需要一直在学习开源平台的内容,比如OpenStack和Docker等等,看着看着就对puppet和chef产生了一些兴趣,随之顺其自然的就发现其实在Windows平台也有自己原生的自动化运维解决方案,它就是PowerShell DSC(desired state configuration),按照字面理解就是"期望的配置状态",我本人对puppet和chef没有太多深入的研究,但是对比了一下两者与PowerShell DSC的实现机制发现的确是大同小异,在此也不讨论谁先

iOS8扩展插件开发配置

一.iOS8扩展插件概述 WWDC14除了发布了OS X v10.10和switf外,iOS8.0也开始变得更加开放了.说到开放,当然要数应用扩展(App Extension)了.顾名思义,应用扩展允许开发者扩展应用的自定义功能和内容,能够让用户在使用其他应用程序时使用该项功能,从而实现各个应用程序间的功能和资源共享.可以将扩展理解为一个轻量级(nimble and lightweight)的分身. 以下为常见的三类插件: Target Type Extension point identifi

扩展欧几里得算法的模板实现

我居然现在还记不住扩欧的板子,我太弱啦! 扩展欧几里得算法解决的是这样的问题: 给定一个不定方程组ax+by=gcd(a,b),求他的一组整数解 先给出实现代码 void exgcd(int a,int b,int &x,int &y) { if(!b) { x=1,y=0;//gcd(a,0)显然等于1*a-0*0=a return a; } int ans=exgcd(b,a%b,x,y); int tem=x; x=y; y-=tem-(a/b)*y; return ans;} 但实

c# 扩展方法奇思妙用基础篇五:Dictionary&lt;TKey, TValue&gt; 扩展

Dictionary<TKey, TValue>类是常用的一个基础类,但用起来有时确不是很方便.本文逐一讨论,并使用扩展方法解决. 向字典中添加键和值 添加键和值使用 Add 方法,但很多时候,我们是不敢轻易添加的,因为 Dictionary<TKey, TValue>不允许重复,尝试添加重复的键时 Add 方法引发 ArgumentException. 大多时候,我们都会写成以下的样子: var dict = new Dictionary<int, string>()

C#3.0 扩展方法

扩展方法 在很多时候我们需要编写各种各样的帮助类,因为官方提供的再全面,也会有未包含到的地方,这时一个静态的帮助类就可以帮我们解决问题 举一个不是很恰当的例子,假如要对一个字符串进行验证其内容不为null并且等于admin但是很多地方都要调用,按照封装思想要封装成一个方法,看起来可能是下面这样子的 这并没有任何问题,代码也是比较简单,但是很难会有一种亲近感,因为StringiHelper.ValidArg这样的调用存在.比如这个验证应该是官方应该考虑到的,但是他们忽略了,编写这样一个扩展后会有很