Udostępnij za pośrednictwem


Szybki start: wdrażanie aplikacji internetowej z systemem Linux na platformie Azure przy użyciu szablonu usługi ARM

Usługa Azure DevOps Services

Rozpocznij pracę z szablonami usługi Azure Resource Manager (szablonami usługi ARM), wdrażając aplikację internetową systemu Linux przy użyciu programu MySQL. Szablony usługi ARM umożliwiają zapisanie konfiguracji w kodzie. Użycie szablonu usługi ARM jest przykładem infrastruktury jako kodu i dobrej praktyki metodyki DevOps.

Szablon usługi ARM to plik w formacie JavaScript Object Notation (JSON) definiujący infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. W składni deklaratywnej opisujesz rozwiązanie, które chcesz wdrożyć, bez konieczności pisania sekwencji poleceń programistycznych służących do tworzenia takiego wdrożenia.

Aby wdrożyć zasoby platformy Azure, możesz użyć składni JSON lub Bicep . Dowiedz się więcej o różnicy między formatami JSON i Bicep dla szablonów.

Wymagania wstępne

Przed rozpoczęciem potrzebne są następujące elementy:

Uzyskiwanie kodu

Rozwidlenie tego repozytorium w usłudze GitHub:

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

Przegląd szablonu

Szablon używany w tym przewodniku Szybki start jest jednym z szablonów szybkiego startu platformy Azure.

Szablon definiuje kilka zasobów:

Tworzenie potoku i wdrażanie szablonu

  1. Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu. Utwórz projekt , jeśli jeszcze go nie masz.

  2. Przejdź do pozycji Potoki, a następnie wybierz pozycję Utwórz potok.

  3. Wybierz pozycję GitHub jako lokalizację kodu źródłowego.

    Uwaga

    Możesz zostać przekierowany do usługi GitHub, aby się zalogować. Jeśli tak, wprowadź poświadczenia usługi GitHub.

  4. Po wyświetleniu listy repozytoriów wybierz pozycję yourname/azure-quickstart-templates/.

    Uwaga

    Możesz zostać przekierowany do usługi GitHub, aby zainstalować aplikację usługi Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.

  5. Po wyświetleniu karty Konfigurowanie wybierz pozycję Starter pipeline.

  6. Zastąp zawartość potoku tym kodem:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Utwórz trzy zmienne: siteName, administratorLogini adminPass. adminPass musi być zmienną wpisu tajnego.

    • Wybierz pozycję Zmienne.
    • + Użyj znaku, aby dodać trzy zmienne. Po utworzeniu adminPasswybierz pozycję Zachowaj ten klucz tajny wartości.
    • Po zakończeniu kliknij pozycję Zapisz .
    Zmienna Wartość Tajne?
    Sitename mytestsite Nie
    adminUser fabrikam Nie
    adminPass Fqdn:5362! Tak
  8. Zamapuj zmienną $(adminPass) wpisu tajnego, aby była dostępna w zadaniu wdrażania grupy zasobów platformy Azure. W górnej części pliku YAML zamapuj $(adminPass) na $(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Dodaj zadanie Kopiuj pliki do pliku YAML. Użyjesz 101-webapp-linux-managed-mysql projektu. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji internetowej w systemie Linux przy użyciu repozytorium usługi Azure Database for MySQL , aby uzyskać więcej informacji.

    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. Dodaj i skonfiguruj zadanie wdrażania grupy zasobów platformy Azure .

    Zadanie odwołuje się zarówno do artefaktu utworzonego za pomocą zadania Copy Files, jak i zmiennych potoku. Ustaw te wartości podczas konfigurowania zadania.

    • Zakres wdrożenia (deploymentScope): ustaw zakres wdrożenia na Resource Group. Wdrożenie można kierować do grupy zarządzania, subskrypcji platformy Azure lub grupy zasobów.
    • Połączenie usługi Azure Resource Manager (azureResourceManagerConnection): wybierz połączenie usługi Azure Resource Manager. Aby skonfigurować nowe połączenie z usługą, wybierz subskrypcję platformy Azure z listy i kliknij pozycję Autoryzuj. Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z platformą Microsoft Azure
    • Subskrypcja (subscriptionId): wybierz subskrypcję, w której powinno nastąpić wdrożenie.
    • Akcja (akcja): ustaw wartość na , aby Create or update resource group utworzyć nową grupę zasobów lub zaktualizować istniejącą.
    • Grupa zasobów: ustaw wartość naARMPipelinesLAMP-rg nazwę nowej grupy zasobów. Jeśli jest to istniejąca grupa zasobów, zostanie zaktualizowana.
    • Lokalizacja(lokalizacja): lokalizacja wdrażania grupy zasobów. Ustaw najbliższą lokalizację (na przykład Zachodnie stany USA). Jeśli grupa zasobów już istnieje w subskrypcji, ta wartość zostanie zignorowana.
    • Lokalizacja szablonu (templateLocation): ustaw wartość Linked artifact. Jest to lokalizacja szablonu i plików parametrów.
    • Szablon (csmFile): ustaw wartość $(Build.ArtifactStagingDirectory)/azuredeploy.json. Jest to ścieżka do szablonu usługi ARM.
    • Parametry szablonu (csmParametersFile): ustaw wartość $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json. Jest to ścieżka do pliku parametrów szablonu usługi ARM.
    • Zastąpij parametry szablonu (overrideParameters): ustaw wartość , aby używać -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) utworzonych wcześniej zmiennych. Te wartości zastąpią parametry ustawione w pliku parametrów szablonu.
    • Tryb wdrażania (deploymentMode): sposób wdrażania zasobów. Ustaw wartość Incremental. Przyrostowe przechowuje zasoby, które nie znajdują się w szablonie usługi ARM i są szybsze niż Complete. Validate tryb umożliwia znalezienie problemów z szablonem przed wdrożeniem.
    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. Kliknij przycisk Zapisz i uruchom polecenie , aby wdrożyć szablon. Zadanie potoku zostanie uruchomione i po kilku minutach, w zależności od agenta, stan zadania powinien wskazywać .Success

Przeglądanie wdrożonych zasobów

  1. Sprawdź, czy wdrożone zasoby. Przejdź do ARMPipelinesLAMP-rg grupy zasobów w Azure Portal i sprawdź, czy widzisz zasoby serwera App Service, plan App Service i Azure Database for MySQL.

    Zasoby szablonu usługi ARM w Azure Portal

    Możesz również zweryfikować zasoby przy użyciu interfejsu wiersza polecenia platformy Azure.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Przejdź do nowej witryny. Jeśli ustawisz wartość siteNamearmpipelinetestsite, lokacja znajduje się w lokalizacji https://armpipelinetestsite.azurewebsites.net/.

Czyszczenie zasobów

Do usuwania zasobów można również użyć szablonu usługi ARM. action Zmień wartość zadania wdrażania grupy zasobów platformy Azure na DeleteRG. Możesz również usunąć dane wejściowe dla templateLocation, , csmFilecsmParametersFile, overrideParametersi 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>'

Następne kroki