之前其实写到过很多篇关于Azure Automationd的应用,如果想在云上跑一些定时的任务,automation是个不错的选择,但是之前写的博客里实现的场景也都是做一些和云上相关的操作,那么如果我们想把云和本地打通,使用automation去管理本地的机器呢?其实也是可以实现的,我们可以使用automation中的hybrid worker来做这个事,因为automation本身是没有我们on premise机器的credential的,所以我们需要借助于agent来实现这个功能
可以先来看一下微软关于这方面的介绍
Azure 自动化中的 Runbook 可能无权访问其他云或本地环境中的资源,因为它们在 Azure 云平台中运行。 利用 Azure 自动化的混合 Runbook 辅助角色功能,既可以直接在计算机上运行 Runbook,也可以对环境中的资源运行 Runbook,从而管理这些本地资源。 Runbook 在 Azure 自动化中进行存储和管理,然后发送到一台或多台指定的计算机。
混合runbook的整体架构可以参考下图,混合runbook其实还要借助Log Analystics来实现,安装完成后,会看到Log Analystics的control panel
总的来说其实架构并不复杂,下边来说说混合runbook能帮我们解决什么问题,在服务器数量很少的时候其实体现的不明显,但是如果服务器很多的时候,比如我们有很多台数据库服务器,我们在每台服务器上都跑了定时任务进行数据库备份,但是这种分散的备份脚本不利于统一的管理,不管是开启/暂停,还是做一些修改,又或者是说要查看脚本执行的情况,都需要把管理任务分散到每一台服务器上去看,但是如果通过统一的hybrid runbook去做,我们就相当于有了一个统一的脚本执行的平台,所有这些任务都可以在这个平台上去完成
这只是一个简单的说明,类似地场景还有很多,下面我们来看下如何部署hybrid worker
总体来讲我们可以分为三个步骤:
1.部署automation account
2.部署Log Analytics
3.部署hybrid worker
首先先把automation account创建出来
创建完成后可以看到相关的信息
接下来部署Log Analytics,Log Analytics部署也很简单
可以看到这些信息就代表部署成功了
接下来就可以部署Hybrid worker了
部署Hybrid worker需要用到一个叫New-OnPremiseHybridWorker的脚本,这个脚本我们可以直接通过PowerShellGet下载到
直接通过Install-Script -Name New-OnPremiseHybridWorker进行安装即可
如果安装过程中遇到以上报错,可以尝试更新PowerShellGet module的版本
install-module PowerShellGet -Force
之后关闭PowerShell再打开尝试,报错消失,正常安装了
下边就可以开始正式部署了,这个脚本有一些参数是必须要配置的
AutomationAccountName(必需):自动化帐户的名称。
AAResourceGroupName(必需):与自动化帐户关联的资源组的名称。
OMSResourceGroupName(可选):Log Analytics 工作区的资源组的名称。 如果未指定此资源组,则使用 AAResourceGroupName 。
HybridGroupName(必需):混合 Runbook 辅助角色组的名称,可将其指定为支持此方案的 runbook 的目标。
SubscriptionID(必需):包含自动化帐户的 Azure 订阅 ID。
WorkspaceName(可选):Log Analytics 工作区名称。 如果没有 Log Analytics 工作区,该脚本会创建并配置一个。
开始部署,可以看到这里其实会下载Log Analystic的agent
完成后,可以在控制面板里看到相关的信息
之后就可以在hybrid worker group里看到刚刚注册的信息了
之后我们就可以按照正常做runbook的套路操作了,尝试来创建一个runbook
我们编写一个简单的脚本,然后发布出去
这里可以看到在run的时候是可以选择要在哪个环境里运行的,也是和之前云上的runbook有区别的地方
可以看到在服务器上已经能正常输出结果了