之前其實寫到過很多篇關於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有區別的地方
可以看到在服務器上已經能正常輸出結果了