クイック スタート: ARM テンプレートを使用して Linux Web アプリを Azure にデプロイする

Azure DevOps Services

MySQL を使用して Linux Web アプリをデプロイして、Azure Resource Manager テンプレート (ARM テンプレート) の使用を開始します。 ARM テンプレートを使用すると、構成をコードに保存できます。 ARM テンプレートの使用は、コードとしてのインフラストラクチャの例であり、DevOps の優れたプラクティスです。

ARM テンプレートは JavaScript Object Notation (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/ を選択します。

    注意

    Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[Approve and install] を選択します。

  5. [構成] タブが表示されたら、Starter pipeline を選択します。

  6. パイプラインの内容をこのコードに置き換えます。

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. siteNameadministratorLoginadminPass の 3 つの変数を作成します。 adminPass はシークレット変数である必要があります。

    • [変数] を選択します。
    • + 記号を使用して 3 つの変数を追加します。 adminPass を作成する場合は、[この値を誰にも教えないようにします] を選択します。
    • 終了したら [保存] をクリックします。
    変数 シークレットかどうか
    siteName mytestsite No
    adminUser fabrikam No
    adminPass Fqdn:5362! はい
  8. シークレット変数 $(adminPass) をマップして、Azure リソース グループのデプロイ タスクで使用できるようにします。 YAML ファイルの上部で、 に$(ARM_PASS)マップ$(adminPass)します。

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. ファイルのコピー タスクを YAML ファイルに追加します。 プロジェクトを使用します 101-webapp-linux-managed-mysql 。 詳細については、「 Azure database for MySQL リポジトリを使用して 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 リソース グループのデプロイ タスクを追加して構成します。

    このタスクは、ファイルのコピー タスクで作成した成果物とパイプライン変数の両方を参照します。 タスクを構成するときに、これらの値を設定します。

    • デプロイ スコープ (deploymentScope): デプロイ スコープを に Resource Group設定します。 管理グループ、Azure サブスクリプション、またはリソース グループをデプロイの対象として指定できます。
    • Azure Resource Manager接続 (azureResourceManagerConnection): Azure Resource Manager サービス接続を選択します。 新しいサービス接続を構成するには、一覧から Azure サブスクリプションを選択し、[ 承認] をクリックします。 詳細については、「 Microsoft Azure に接続する 」を参照してください
    • サブスクリプション (subscriptionId): デプロイ先のサブスクリプションを選択します。
    • アクション (アクション): を に Create or update resource group 設定して、新しいリソース グループを作成するか、既存のリソース グループを更新します。
    • リソース グループ: を にARMPipelinesLAMP-rg 設定して、新しいリソース グループに名前を付けます。 これが既存のリソース グループの場合は、更新されます。
    • Location(location): リソース グループをデプロイするための場所。 最も近い場所 (米国西部など) に設定します。 リソース グループがサブスクリプションに既に存在する場合、この値は無視されます。
    • テンプレートの場所 (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 テンプレートに含まれていないリソースが保持され、 よりも Complete高速です。 Validate モードを使用すると、デプロイ前にテンプレートに関する問題を見つけることができます。
    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. リソースがデプロイされていることを確認します。 Azure portalのARMPipelinesLAMP-rgリソース グループに移動し、サーバー リソースのApp Service、App Serviceプラン、およびAzure Database for MySQLが表示されていることを確認します。

    Azure portal 内の ARM テンプレート リソース

    Azure CLI を使用してリソースを確認することもできます。

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. 新しいサイトに移動します。 siteNamearmpipelinetestsite に設定した場合、サイトは https://armpipelinetestsite.azurewebsites.net/ にあります。

リソースをクリーンアップする

ARM テンプレートを使用してリソースを削除することもできます。 actionAzure リソース グループのデプロイ タスクの値を にDeleteRG変更します。 、および の入力をtemplateLocationoverrideParameterscsmFilecsmParametersFile削除することもできます。deploymentMode

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>'

次の手順