Azure 自动化里添加ResourceManager模块

时间:2022-02-24 07:18:20

最近想尝试通过Azure里的自动化功能来控制VM的定时开关机,找到网上的一篇文章,  按照文章操作到“Import Azure Resource manager module”的第6步时,需要导入一个”AzureResourceManager.zip”文件,但当前的页面里却找不到这个文件的下载地址。

就为了加载这个文件,查资料做测试,前后折腾了两三天,好在最终总算是成功了,在这里做个记录备忘。

1. 哪里去找这个AzureResourceManager.zip文件?

安装了Azure PoweShell 后,默认在C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager目录下会有一个AzureResourceManager目录。把这个文件打包压缩成AzureResourceManager.zip就可以了。

2. 如何把它添加成Auzre Automation的模块?

方法一:在传统的Azure Portal上,打开自动化帐户,选择下部的导入模块,然后选择刚才生成的zip文件进行提交。

Azure 自动化里添加ResourceManager模块

Azure 自动化里添加ResourceManager模块

方法二:在新的Azure Portal上,依次打开自动化管理帐户->资产->模块。

Azure 自动化里添加ResourceManager模块

然后选择”添加模块”

Azure 自动化里添加ResourceManager模块

Azure 自动化里添加ResourceManager模块

选择之前生成的zip文件进行提交。

方法三: 使用Azure Powershell

New-AzureAutomationModule –AutomationAccountName <已创建好的自动化帐户名> –ContentLink <http://Internet address/AzureResourceManager.zip> –Name <待创建的自动化模块名> –ResourceGroupName <已创建号的自动化帐户名所在的资源组的组名>

通过Powershell来处理,需要提前将AzureResourceManager.zip文件上传到网上某个位置,比如保存到Azure的Storage里,并设置为可以公开下载。

e.g. new-azureautomationmodule –automationaccountname vmautoshutdown –contentlink https://www.eee.com/azureresourcemanager.zip –name AzureResourceManager –Resourcegroupname vmautoshutdown

三种方式在上传Zip文件时需要注意:

1. 系统只支持40M的文件上传,但最新版本的Azure Powershell安装好后,生成的Zip文件会大于40M。解决办法就是删除AzureResourceManager下面几个用不到的模块目录,然后相应的修改目录里AzureResourceManager.psd1文件,把对应的模块引用去掉。比如,不需要DataFactory功能模块,就把DataFactories目录删除,然后在AzureResourceManager.psd1文件里,把DataFactories有关的引用都去掉。

Azure 自动化里添加ResourceManager模块

Azure 自动化里添加ResourceManager模块

(当时在这里出了疏漏,删除配置文件里的SiteRecovery引用时,由于它是在最后一行,而之前每一行的最后都有一个逗号。在删除SiteRecovery这行时没有删除上一行的逗号,导致模块导入无法成功,而PowerShell方式根本没报错,新Portal下的报错信息又非常有限,只提示Job suspended by…,后来是在传统的Portal里添加模块时,注意到报错里有提到一句指令的后面多了一个逗号才发现问题所在)

Azure 自动化里添加ResourceManager模块

2. Azure 里默认会有0.9.1版本的资产模块, 而AzureResourcemanager模块的版本是0.9.7,这两个可能会有冲突。建议把0.9.1版本的模块删除,然后将C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement目录下的Azure目录打包(这个是0.9.7)上传, 替代老版本。