Share via


快速入門:使用 ARM 範本將 Linux Web 應用程式部署至 Azure

Azure DevOps Services

使用 MySQL 部署 Linux Web 應用程式,以開始使用Azure Resource Manager 範本 (ARM) 範本。 ARM 範本可讓您將設定儲存在程式碼中。 使用 ARM 範本是基礎結構即程式碼和良好 DevOps 做法的範例。

ARM 範本是一個 JavaScript 物件標記法 (JSON) 檔案,會定義專案的基礎結構和設定。 範本會使用宣告式語法。 在宣告式語法中,您可以描述預期的部署,而不需要撰寫程式設計命令順序來建立部署。

您可以使用 JSON 或 Bicep 語法 來部署 Azure 資源。 深入瞭解 範本的 JSON 與 Bicep 之間的差異

先決條件

在開始之前,您需要:

取得程式碼

在 GitHub 上派生此存放庫:

https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql

檢閱範本

本快速入門中使用的範本是來自 Azure 快速入門範本

範本會定義數個資源:

建立管線並部署範本

  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。 如果您還沒有專案,請建立專案

  2. 移至 [管線],然後選取 [ 建立管線]。

  3. 選取 [GitHub ] 作為原始程式碼的位置。

    注意

    您可能會重新導向至 GitHub 以登入。 若是如此,請輸入您的 GitHub 認證。

  4. 當存放庫清單出現時,請選取 yourname/azure-quickstart-templates/

    注意

    您可以重新導向至 GitHub 以安裝 Azure Pipelines 應用程式。 如果是,請選取 [ 核准並安裝]。

  5. 當 [設定] 索引標籤出現時,選取 Starter pipeline

  6. 以下列程式碼取代管線的內容:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. 建立三個變數: siteNameadministratorLoginadminPassadminPass 必須是秘密變數。

    • 選取 [變數]。
    • +使用 符號來新增三個變數。 當您建立 adminPass 時,請選取 [保留此值秘密]。
    • 當您完成時,按一下 [儲存]
    變數 秘密?
    siteName mytestsite No
    adminUser fabrikam No
    adminPass Fqdn:5362! Yes
  8. 對應秘密變數 $(adminPass) ,使其可在您的 Azure 資源群組部署工作中使用。 在 YAML 檔案頂端,對應 $(adminPass)$(ARM_PASS)

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. 將 [複製檔案] 工作新增至 YAML 檔案。 您將使用 101-webapp-linux-managed-mysql 專案。 如需詳細資訊,請參閱 使用適用于 MySQL 的 Azure 資料庫存放庫在 Linux 上建置 Web 應用程式 ,以取得詳細資訊。

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
  10. 新增和設定 Azure 資源群組部署 工作。

    工作會參考您使用複製檔案工作和管線變數所建置的成品。 設定工作時,請設定這些值。

    • deployment scope (deploymentScope) :將部署範圍設定為 Resource Group 。 您可以將部署的目標設定為管理群組、Azure 訂用帳戶或資源群組。
    • Azure Resource Manager連線 (azureResourceManagerConnection) :選取您的 Azure Resource Manager 服務連線。 若要設定新的服務連線,請從清單中選取 Azure 訂用帳戶,然後按一下 [ 授權]。 如需詳細資訊,請參閱連線至 Microsoft Azure
    • 訂用帳戶 (subscriptionId) :選取部署應前往的訂用帳戶。
    • 動作 (動作) :設定為 Create or update resource group 以建立新的資源群組或更新現有的資源群組。
    • 資源群組:設定為 ARMPipelinesLAMP-rg 以命名新的資源群組。 如果這是現有的資源群組,則會更新。
    • 位置 (位置) :部署資源群組的位置。 例如,設定為最接近的位置 (美國西部) 。 如果訂用帳戶中已有資源群組,將會忽略此值。
    • 範本位置 (templateLocation) :設定為 Linked artifact 。 這是範本和參數檔案的位置。
    • 範本 (csmFile) :設定為 $(Build.ArtifactStagingDirectory)/azuredeploy.json 。 這是 ARM 範本的路徑。
    • 範本參數 (csmParametersFile) :設定為 $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json 。 這是 ARM 範本的參數檔案路徑。
    • (overrideParameters) 覆寫範本參數 :設定為 -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) 以使用您稍早建立的變數。 這些值將會取代範本參數檔案中設定的參數。
    • 部署模式 (deploymentMode) :應部署資源的方式。 設定為 Incremental。 累加會保留不在 ARM 範本中的資源,且速度比 快 CompleteValidate 模式可讓您在部署之前找出範本的問題。
    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: AzureResourceManagerTemplateDeployment@3
      inputs:
        deploymentScope: 'Resource Group'
        azureResourceManagerConnection: '<your-resource-manager-connection>'
        subscriptionId: '<your-subscription-id>'
        action: 'Create Or Update Resource Group'
        resourceGroupName: 'ARMPipelinesLAMP-rg'
        location: '<your-closest-location>'
        templateLocation: 'Linked artifact'
        csmFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.json'
        csmParametersFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json'
        overrideParameters: '-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)'
        deploymentMode: 'Incremental'
    
  11. 按一下 [儲存並執行 ] 以部署您的範本。 管線作業將會啟動,幾分鐘後,視您的代理程式而定,作業狀態應該會指出 Success

檢閱已部署的資源

  1. 確認已部署的資源。 移至 ARMPipelinesLAMP-rg Azure 入口網站中的資源群組,並確認您看到App Service、App Service方案,以及適用於 MySQL 的 Azure 資料庫伺服器資源。

    Azure 入口網站中的 ARM 範本資源

    您也可以使用 Azure CLI 來驗證資源。

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. 移至您的新網站。 如果您設定 siteNamearmpipelinetestsite ,則月臺位於 https://armpipelinetestsite.azurewebsites.net/

清除資源

您也可以使用 ARM 範本來刪除資源。 將 actionAzure 資源群組部署 工作中的值變更為 DeleteRG 。 您也可以移除 、 csmFilecsmParametersFileoverrideParametersdeploymentModetemplateLocation 輸入。

variables:
  ARM_PASS: $(adminPass)

trigger:
- none

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: CopyFiles@2
  inputs:
    SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: AzureResourceManagerTemplateDeployment@3
  inputs:
    deploymentScope: 'Resource Group'
    azureResourceManagerConnection: '<your-resource-manager-connection>'
    subscriptionId: '<your-subscription-id>'
    action: 'DeleteRG'
    resourceGroupName: 'ARMPipelinesLAMP-rg'
    location: ''<your-closest-location>'

後續步驟