クイック スタート: 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 の違いの詳細を確認してください。
前提条件
開始する前に、次のことが必要です。
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- アクティブな Azure DevOps 組織。 Azure Pipelines にサインアップします。
- (Bicep デプロイの場合)既存のリソース グループ。 Azure portal、Azure CLI、またはAzure PowerShellを使用してリソース グループを作成します。
コードを取得する
GitHub でこのリポジトリをフォークします。
https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql
テンプレートを確認する
このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。
このテンプレートでは、いくつかのリソースが定義されています。
- Microsoft.Web/serverfarms
- Microsoft.Web/sites
- Microsoft.DBforMySQL/servers
- Microsoft.DBforMySQL/servers/firewallrules
- Microsoft.DBforMySQL/servers/databases
パイプラインを作成してテンプレートをデプロイする
Azure DevOps 組織にサインインし、プロジェクトに移動します。 プロジェクトを作成する (まだ作成していない場合)。
[パイプライン] に移動し、[パイプラインの作成] を選択します。
ソース コードの場所として [GitHub] を選択します。
注意
サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
リポジトリの一覧が表示されたら、
yourname/azure-quickstart-templates/
を選択します。注意
Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[Approve and install] を選択します。
[構成] タブが表示されたら、
Starter pipeline
を選択します。パイプラインの内容をこのコードに置き換えます。
trigger: - none pool: vmImage: 'ubuntu-latest'
siteName
、administratorLogin
、adminPass
の 3 つの変数を作成します。adminPass
はシークレット変数である必要があります。- [変数] を選択します。
-
+
記号を使用して 3 つの変数を追加します。adminPass
を作成する場合は、[この値を誰にも教えないようにします] を選択します。 - 終了したら [保存] をクリックします。
変数 値 シークレットかどうか siteName mytestsite
No adminUser fabrikam
No adminPass Fqdn:5362!
はい シークレット変数
$(adminPass)
をマップして、Azure リソース グループのデプロイ タスクで使用できるようにします。 YAML ファイルの上部で、 に$(ARM_PASS)
マップ$(adminPass)
します。variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest'
ファイルのコピー タスクを 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)'
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'
-
デプロイ スコープ (deploymentScope): デプロイ スコープを に
[ 保存して実行] を クリックしてテンプレートをデプロイします。 パイプライン ジョブが起動され、数分後にエージェントに応じて、ジョブの状態が を示す
Success
必要があります。
デプロイされているリソースを確認する
リソースがデプロイされていることを確認します。 Azure portalの
ARMPipelinesLAMP-rg
リソース グループに移動し、サーバー リソースのApp Service、App Serviceプラン、およびAzure Database for MySQLが表示されていることを確認します。Azure CLI を使用してリソースを確認することもできます。
az resource list --resource-group ARMPipelinesLAMP-rg --output table
新しいサイトに移動します。
siteName
をarmpipelinetestsite
に設定した場合、サイトはhttps://armpipelinetestsite.azurewebsites.net/
にあります。
リソースをクリーンアップする
ARM テンプレートを使用してリソースを削除することもできます。
action
Azure リソース グループのデプロイ タスクの値を にDeleteRG
変更します。 、および の入力をtemplateLocation
overrideParameters
csmFile
csmParametersFile
削除することもできます。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>'