溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》
  • 首頁 > 
  • 教程 > 
  • 服務(wù)器 > 
  • 云計(jì)算 > 
  • Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練

發(fā)布時(shí)間:2020-08-06 06:04:13 來源:網(wǎng)絡(luò) 閱讀:3259 作者:mxy00000 欄目:云計(jì)算

下邊回到我們的原始需求,來看下郵件開關(guān)機(jī)應(yīng)該如何解決安全問題

 

分析這個(gè)需求,其實(shí)可以通過Microsoft Flow + Azure Automation的方式實(shí)現(xiàn),首先O365郵箱接收郵件,然后通過Flow觸發(fā)Azure Automation的runbook,在runbook里定義好我們需要執(zhí)行的的任務(wù),這樣就可以實(shí)現(xiàn)我們需要的功能了

 

而身份驗(yàn)證實(shí)際上這里用的是我們之前講的第二種,也就是service principal的方式,automation本身實(shí)際就是使用的service principal的方式,在Azure AD中實(shí)際上是可以看到automation注冊(cè)的application的

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



而Flow觸發(fā)runbook,其實(shí)可以通過Flow來觸發(fā)webhook,而automation其實(shí)是可以直接創(chuàng)建webhook的,這樣其實(shí)就可以直接通過Flow觸發(fā)Azure automation的webhook,我們的需求就可以實(shí)現(xiàn)了

 

關(guān)于Microsoft Flow,如果說有人了解的不是很多的話,可以這里先做一個(gè)簡(jiǎn)單的介紹

Microsoft Flow實(shí)際上是一個(gè)在線的workflow的service,可以在多個(gè)app之間執(zhí)行一些自動(dòng)化的任務(wù),F(xiàn)low對(duì)接的系統(tǒng)非常的多,比如Facebook,Twitter,Dynamic CRM,O365

 

目前來說,可以通過Flow對(duì)接超過200個(gè)服務(wù),以下是其中的一部分



Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



通過Flow,我們可以制定一些自動(dòng)化的流程,舉例來說,想實(shí)現(xiàn)在Yammer中有負(fù)面消息的時(shí)候就通知某個(gè)人呢,這種需求就可以通過Flow結(jié)合其他服務(wù)實(shí)現(xiàn)

 

首先通過Flow連接到Y(jié)ammer->調(diào)用認(rèn)知服務(wù)文本分析 API 檢查情緒是否是負(fù)面的->如果是負(fù)面的,還可以調(diào)用Microsoft Translator將此文本翻譯為別的語言->最后調(diào)用郵件發(fā)送消息通知


這就是一個(gè)標(biāo)準(zhǔn)的Flow了

 

對(duì)應(yīng)到我們的需求,則比上邊講的還要簡(jiǎn)單一些

首先通過調(diào)用郵件,識(shí)別關(guān)鍵字,如果識(shí)別到關(guān)鍵字->觸發(fā)webhook,在Automation中執(zhí)行對(duì)應(yīng)的runbook即可,想要復(fù)雜一點(diǎn)還可以加一些判斷的邏輯,不同的關(guān)鍵字可以調(diào)用不同的webhook,實(shí)現(xiàn)不同的功能


我們這里準(zhǔn)備實(shí)現(xiàn)一個(gè)簡(jiǎn)單的邏輯,在email的主題中注明是開機(jī)還是關(guān)機(jī),然后根據(jù)關(guān)鍵字判斷調(diào)用不同的webhook,想要調(diào)用webhook,當(dāng)然首先這個(gè)webhook得存在才行,這里先在Azure automation中把webhook創(chuàng)建好


登陸Azure Portal后,找到automation,創(chuàng)建一個(gè)新的開機(jī)runbook

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練

Runbook 的類型選擇普通的PowerShell即可

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


之后再依此創(chuàng)建一個(gè)關(guān)機(jī)的runbook,當(dāng)然創(chuàng)建一個(gè)單一的runbook,然后根據(jù)參數(shù)控制開關(guān)機(jī)也是可以的

 

創(chuàng)建好之后,點(diǎn)擊編輯

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


編寫好對(duì)應(yīng)的代碼,點(diǎn)擊publish

$connectionName = "AzureRunAsConnection"
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName

$logonAttempt = 0
$logonResult = $False

write-output "Login to Azure"
while(!($connectionResult) -And ($logonAttempt -le 10))
{
$LogonAttempt++
# Logging in to Azure...
$connectionResult = Connect-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint

Start-Sleep -Seconds 1
}

write-output "Start auto VM"
import-module Azurerm
Start-AzureRmVM -ResourceGroupName mxyjpwest -Name automationvm


Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


之后,給這個(gè)runbook添加一個(gè)webhook

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



注意,這里一定要保存好webhook的URL,因?yàn)檫@個(gè)URL創(chuàng)建好之后就不可見了,保存好之后創(chuàng)建webhook

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



在webhook里已經(jīng)可以看到了

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


之后按照這個(gè)方法,創(chuàng)建好關(guān)機(jī)的webhook,到此Azure方面的準(zhǔn)備工作就完成了

 

之后開始準(zhǔn)備Flow,F(xiàn)low其實(shí)在Global Office 365的訂閱里是包含的,所以直接登錄到Global O365,然后選擇Flow

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



選擇從空白模板創(chuàng)建

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



這里選擇收到新電子郵件時(shí)

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


選擇好收件人,之后添加新步驟

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



然后選擇控制項(xiàng)->條件

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


按照以下條件設(shè)置

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


之后對(duì)如果是添加操作

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練

搜索webhook

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



輸入之前保存下來的webhook URL,注意一點(diǎn)要保證URL的安全,因?yàn)檫@個(gè)URL是包含token的,相當(dāng)于直接就有執(zhí)行操作的權(quán)限

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


之后設(shè)置一個(gè)并行的條件,判斷郵件主題是否包含stop,然后添加對(duì)應(yīng)stop的webhook

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


完成后整體是這樣的

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



之后發(fā)送一個(gè)郵件來進(jìn)行一波測(cè)試

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


稍等片刻后,可以看到Flow已經(jīng)被觸發(fā)了!

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



在automation中可以看到,runbook也在running了!

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



片刻后,VM已經(jīng)是stopped狀態(tài)

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


在log里可以很清晰地看到有一條由automation賬戶觸發(fā)的shutdown操作

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練



同理,再發(fā)一封start的郵件

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


之后可以看到VM已經(jīng)自動(dòng)start了,測(cè)試完成!

Azure實(shí)踐之如何通過郵件實(shí)現(xiàn)Azure VM的開關(guān)機(jī)(二)—— Flow實(shí)戰(zhàn)演練


當(dāng)然,這個(gè)應(yīng)用場(chǎng)景是非常簡(jiǎn)單得了,但是拋磚引玉,F(xiàn)low和automation真的能創(chuàng)造出很多的場(chǎng)景!希望以后能有時(shí)間多研究研究


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI