Краткое руководство. Развертывание веб-приложения Linux в Azure с помощью шаблона ARM

Azure DevOps Services

Начните работу с шаблонами Azure Resource Manager (шаблоны ARM), развернув веб-приложение Linux с помощью MySQL. Шаблоны ARM позволяют сохранить конфигурацию в коде. Использование шаблона ARM является примером инфраструктуры как кода и хорошей практикой DevOps.

Шаблон ARM является файлом нотации объектов JavaScript (JSON), определяющими инфраструктуру и конфигурацию вашего проекта. В шаблоне используется декларативный синтаксис. В декларативном синтаксисе вы можете описать предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Для развертывания ресурсов Azure можно использовать синтаксис JSON или Bicep . Узнайте больше о различиях между 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. Создайте три переменные: siteName, administratorLoginи adminPass. adminPass должен быть секретной переменной.

    • Выберите элемент Variables (Переменные).
    • + Используйте знак , чтобы добавить три переменные. При создании adminPassвыберите Сохранить это значение в секрете.
    • После завершения настройки нажмите Сохранить .
    Переменная Значение Секрет?
    siteName mytestsite Нет
    adminUser fabrikam Нет
    adminPass Fqdn:5362! Да
  8. Сопоставьте секретную переменную $(adminPass) , чтобы она была доступна в задаче развертывания группы ресурсов Azure. В верхней части файла YAML сопоставьте с $(adminPass)$(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Добавьте задачу "Копировать файлы" в ФАЙЛ YAML. Вы будете 101-webapp-linux-managed-mysql использовать проект . Дополнительные сведения см. в статье Создание веб-приложения в Linux с помощью репозитория Базы данных Azure для 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. Добавьте и настройте задачу развертывания группы ресурсов 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. Убедитесь, что ресурсы развернуты. Перейдите ARMPipelinesLAMP-rg к группе ресурсов в портал Azure и убедитесь, что отображаются ресурсы Служба приложений, план Служба приложений и сервер База данных Azure для MySQL.

    Ресурсы шаблона ARM в портал Azure

    Вы также можете проверить ресурсы с помощью Azure CLI.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Перейдите на новый сайт. Если задано значение siteNamearmpipelinetestsite, сайт находится по адресу https://armpipelinetestsite.azurewebsites.net/.

Очистка ресурсов

Вы также можете использовать шаблон ARM для удаления ресурсов. Измените action значение в задаче развертывания группы ресурсов Azure на DeleteRG. Можно также удалить входные данные для templateLocation, csmFile, csmParametersFile, overrideParametersи 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>'

Дальнейшие действия