前言
當我們在 Azure Web App 上開發網站,寫好正式網站後,後續一定會有修改或者改版…等等重新佈署的情況,此時我們可以利用 Azure Web App 的功能:新增一個預備環境 (Deployment Slot),先行測試修改好的網站,而測試完成後,就會進行正式環境與預備環境的交換 (switch) 動作,但網站交換動作用 Azure 管理介面點選實在好繁瑣啊~
一般利用 Azure 管理介面交換的話,步驟大致如下:登入 Azure Portal→找到 Azure Web App 服務→點入欲交換的網站→按下交換→選擇來源與目的網站→確認交換佈署,這些動作做下來可能需要 5 分鐘的時間!
如果使用 powershell 指令,事先把 credential 先建立好,可以縮短交換網站的前置時間,在 30 秒內送出交換指令,直接完成網站交換!本文介紹如何利用 powershell 指令存放 credential,並交換 Azure Web App 的 Production 與 Staging 網站。
必要條件
- 請事先建立 Azure AD 使用者,並給予訂閱的 co-administrator 權限
- 利用 Get-Credential 指令存放您的 Azure 帳密
$credential = Get-Credential
- 將上個步驟的帳密存成 txt 檔,當然不是明文!是加密過的,接著往後就可以使用這個 Credential 跑排程 (請自行調整 txt 存放位置參數)
$credential.Password | ConvertFrom-SecureString | Set-Content C:\PS\swap\password.txt
實作
我已事先建立好 testmain 及 testsub (預備網站),如下圖:
轉換前的 testmain 網站,是由 Azure Web App Gallery - Blog Engine 所建立出來的 Blog:
以下步驟可以存成ps1,利用手動開啟、或 Windows 工作排程去觸發:
- 讀取先前建立的密碼文字檔,並轉換成登入 OrgID 需要的格式
$password = Get-Content C:\PS\swap\password.txt | ConvertTo-SecureString
- 使用 Azure AD 帳號加上解密完的密碼進行登入
$mycreds = New-Object System.Management.Automation.PSCredential ("AzureAD帳號", $password)
$LiveCred = Get-Credential -Credential $mycreds
Add-AzureAccount -Credential $LiveCred
- 選擇 Azure 訂閱,請記得修改參數
Select-AzureSubscription -subscriptionName "Azure Pass"
- 根據您的需求,利用下列某一行指令執行即可。
#如果只有一個 deployment slot,就使用以下指令
Switch-AzureWebsiteSlot -Name <AzureWebsiteName>
#如果要 slot swap slot 可以用以下指令
Switch-AzureWebsiteSlot –Name <AzureWebsiteName> -Slot1 <slotName> -Slot2 <slotName>
#如果要 production 跟其中一個 slot 交換可以用以下指令
Switch-AzureWebsiteSlot –Name <AzureWebsiteName> -Slot1 <slotName>
- 可以看到 testmain 網站已經交換完成,由 Blog Engine 變成 Azure Web App Default 建立起來的畫面!
== 要試用 Azure的朋友 ,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==