Rychlý start: Nasazení linuxové webové aplikace do Azure pomocí šablony ARM

Azure DevOps Services

Začněte používat šablony Azure Resource Manager (šablony ARM) nasazením linuxové webové aplikace s MySQL. Šablony ARM poskytují způsob, jak uložit konfiguraci v kódu. Použití šablony ARM je příkladem infrastruktury jako kódu a dobrým postupem DevOps.

Šablona Resource ARM je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. V deklarativní syntaxi popíšete zamýšlené nasazení, aniž byste museli psát sekvenci programovacích příkazů pro vytvoření tohoto nasazení.

K nasazení prostředků Azure můžete použít syntaxi JSON nebo Bicep . Přečtěte si další informace o rozdílech mezi JSON a Bicep pro šablony.

Požadavky

Než začnete, potřebujete:

Získání kódu

Vytvoření forku tohoto úložiště na GitHubu:

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

Kontrola šablony

Šablona použitá v tomto rychlém startu je jednou z šablon pro rychlý start Azure.

Šablona definuje několik prostředků:

Vytvoření kanálu a nasazení šablony

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte do svého projektu. Vytvořte projekt , pokud ho ještě nemáte.

  2. Přejděte na Pipelines (Kanály) a pak vyberte Create Pipeline (Vytvořit kanál).

  3. Jako umístění zdrojového kódu vyberte GitHub .

    Poznámka

    Možná budete přesměrováni na GitHub, abyste se přihlásili. Pokud ano, zadejte své přihlašovací údaje GitHubu.

  4. Jakmile se zobrazí seznam úložišť, vyberte yourname/azure-quickstart-templates/.

    Poznámka

    Můžete být přesměrováni na GitHub a nainstalovat aplikaci Azure Pipelines. Pokud ano, vyberte Schválit a nainstalovat.

  5. Když se zobrazí karta Konfigurovat, vyberte Starter pipeline.

  6. Obsah kanálu nahraďte tímto kódem:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Vytvořte tři proměnné: siteName, administratorLogina adminPass. adminPass musí být proměnná tajného kódu.

    • Vyberte Proměnné.
    • Pomocí znaménka + přidejte tři proměnné. Při vytváření adminPassvyberte Zachovat tuto hodnotu v tajnosti.
    • Až budete hotovi, klikněte na Uložit .
    Proměnná Hodnota Tajemství?
    Sitename mytestsite No
    adminUser fabrikam No
    adminPass Fqdn:5362! Yes
  8. Namapujte proměnnou $(adminPass) tajného klíče tak, aby byla k dispozici v úloze nasazení skupiny prostředků Azure. V horní části souboru YAML namapujte $(adminPass) na $(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Přidejte do souboru YAML úlohu Kopírovat soubory. Použijete 101-webapp-linux-managed-mysql projekt. Další informace najdete v tématu Vytvoření webové aplikace v Linuxu s využitím úložiště Azure Database for MySQL .

    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. Přidejte a nakonfigurujte úlohu nasazení skupiny prostředků Azure .

    Úloha odkazuje jak na artefakt, který jste vytvořili pomocí úlohy Kopírovat soubory, tak na proměnné kanálu. Tyto hodnoty nastavte při konfiguraci úkolu.

    • Obor nasazení (deploymentScope): Nastavte obor nasazení na Resource Group. Nasazení můžete zacílit na skupinu pro správu, předplatné Azure nebo skupinu prostředků.
    • Připojení azure Resource Manager (azureResourceManagerConnection): Vyberte připojení služby Azure Resource Manager. Pokud chcete nakonfigurovat nové připojení služby, vyberte ze seznamu předplatné Azure a klikněte na Autorizovat. Další podrobnosti najdete v tématu Připojení k Microsoft Azure .
    • Předplatné (id předplatného): Vyberte předplatné, do kterého má nasazení přejít.
    • Akce (akce): Pokud chcete vytvořit novou skupinu prostředků nebo aktualizovat existující skupinu prostředků, nastavte Create or update resource group na .
    • Skupina prostředků: Nastavte na aARMPipelinesLAMP-rg pojmenujte novou skupinu prostředků. Pokud se jedná o existující skupinu prostředků, bude aktualizována.
    • Location(location): Umístění pro nasazení skupiny prostředků. Nastavte na nejbližší umístění (například USA – západ). Pokud skupina prostředků už ve vašem předplatném existuje, bude se tato hodnota ignorovat.
    • Umístění šablony (templateLocation): Nastavte na Linked artifact. Toto je umístění šablony a souborů parametrů.
    • Šablona (csmFile): Nastavte na $(Build.ArtifactStagingDirectory)/azuredeploy.json. Toto je cesta k šabloně ARM.
    • Parametry šablony (csmParametersFile): Nastavte na $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json. Toto je cesta k souboru parametrů pro vaši šablonu ARM.
    • Přepsat parametry šablony (overrideParameters): Nastavte na pro -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) použití proměnných, které jste vytvořili dříve. Tyto hodnoty nahradí parametry nastavené v souboru parametrů šablony.
    • Režim nasazení (deploymentMode): Způsob nasazení prostředků. Nastavte na Incremental. Přírůstkové zachová prostředky, které nejsou v šabloně ARM, a je rychlejší než Complete. Validate Režim umožňuje najít problémy se šablonou před nasazením.
    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. Kliknutím na Uložit a spustit šablonu nasadíte. Úloha kanálu se spustí a po několika minutách, v závislosti na vašem agentu, by stav úlohy měl ukazovat Success.

Kontrola nasazených prostředků

  1. Ověřte, že jsou nasazené prostředky. Přejděte do ARMPipelinesLAMP-rg skupiny prostředků v Azure Portal a ověřte, že se zobrazují App Service, App Service Plán a prostředky Azure Database for MySQL serveru.

    Prostředky šablony ARM v Azure Portal

    Prostředky můžete také ověřit pomocí Azure CLI.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Přejděte na nový web. Pokud nastavíte siteName hodnotu armpipelinetestsite, lokalita se nachází na adrese https://armpipelinetestsite.azurewebsites.net/.

Vyčištění prostředků

K odstranění prostředků můžete použít také šablonu ARM. action Změňte hodnotu v úloze nasazení skupiny prostředků Azure na DeleteRG. Můžete také odebrat vstupy pro templateLocation, , csmFilecsmParametersFile, overrideParametersa 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>'

Další kroky