利用 powershell 指令存放 Credential 交換 Azure Web App 的生產環境與預備環境

前言 當我們在 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 $mycredsAdd-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 天期 進行試用申請。 ==