利用 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 網站。

必要條件

  1. 請事先建立 Azure AD 使用者,並給予訂閱的 co-administrator 權限
  2. 利用 Get-Credential 指令存放您的 Azure 帳密
    $credential = Get-Credential
  3. 將上個步驟的帳密存成 txt 檔,當然不是明文!是加密過的,接著往後就可以使用這個 Credential 跑排程 (請自行調整 txt 存放位置參數)
    $credential.Password | ConvertFrom-SecureString | Set-Content C:\PS\swap\password.txt

實作

我已事先建立好 testmain 及 testsub (預備網站),如下圖:

image 

轉換前的 testmain 網站,是由 Azure Web App Gallery - Blog Engine 所建立出來的 Blog:

image

以下步驟可以存成ps1,利用手動開啟、或 Windows 工作排程去觸發:

  1. 讀取先前建立的密碼文字檔,並轉換成登入 OrgID 需要的格式
    $password = Get-Content C:\PS\swap\password.txt  | ConvertTo-SecureString
  2. 使用 Azure AD 帳號加上解密完的密碼進行登入
    $mycreds = New-Object System.Management.Automation.PSCredential ("AzureAD帳號", $password)
    $LiveCred = Get-Credential -Credential $mycreds
    Add-AzureAccount -Credential $LiveCred
  3. 選擇 Azure 訂閱,請記得修改參數
    Select-AzureSubscription -subscriptionName "Azure Pass"
  4. 根據您的需求,利用下列某一行指令執行即可。
    #如果只有一個 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>
    image
  5. 可以看到 testmain 網站已經交換完成,由 Blog Engine 變成 Azure Web App Default 建立起來的畫面!
    image 

 

== 要試用 Azure的朋友 ,請點選 Azure Free Trial – 試用 30 天期 進行試用申請。 ==

Loading