Подготовка агентов для групп развертывания

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Группы развертывания упрощают определение логических групп целевых компьютеров для развертывания и установку необходимого агента на каждом компьютере. В этой статье объясняется, как создать группу развертывания и как установить и подготовить агент на каждой виртуальной или физической машине в группе развертывания.

Агент можно установить одним из следующих способов:

Сведения об агентах и конвейерах см. в следующем разделе:

Запуск скрипта установки на целевых серверах

  1. На вкладке "Группы развертывания" Azure Pipelines нажмите кнопку "Создать", чтобы создать новую группу.

  2. Введите имя группы и при необходимости описание, а затем нажмите кнопку "Создать".

  3. В разделе "Регистрация компьютеров с помощью командной строки" на следующей странице выберите целевую операционную систему компьютера.

  4. Выберите "Использовать личный маркер доступа" в скрипте для проверки подлинности. Подробнее.

  5. Выберите "Копировать сценарий в буфер обмена".

  6. Войдите на каждый целевой компьютер, в свою очередь, используя учетную запись с соответствующими разрешениями и:

    • Откройте командную строку PowerShell Администратор istrator, вставьте в скопированный скрипт, а затем выполните его, чтобы зарегистрировать компьютер в этой группе.

    • Если при запуске скрипта не удалось создать безопасный канал, выполните следующую команду в командной строке PowerShell Администратор istrator:

      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    • При появлении запроса на настройку тегов агента нажмите Y и введите все теги, которые будут использоваться для идентификации подмножеств компьютеров в группе для частичных развертываний.

      Теги, которые назначаются, позволяют ограничить развертывание определенными серверами, когда группа развертывания используется в задании run on machine group job.

    • При появлении запроса на указание учетной записи пользователя щелкните Возврат, чтобы принять значения по умолчанию.

    • Дождитесь завершения скрипта с сообщением Service vstsagent.{organization-name}.{computer-name} started successfully.

  7. На странице групп развертывания Azure Pipelines откройте вкладку "Компьютеры" и убедитесь, что агенты запущены. Если настроенные теги не видны, обновите страницу.

Установка расширения виртуальной машины агента Azure Pipelines агента Azure

  1. На вкладке "Группы развертывания" Azure Pipelines нажмите кнопку "Создать", чтобы создать новую группу.

  2. Введите имя группы и при необходимости описание, а затем нажмите кнопку "Создать".

  3. В портал Azure для каждой виртуальной машины, которая будет включена в группу развертывания, откройте колонку расширения, нажмите кнопку +Добавить, чтобы открыть список новых ресурсов и выберите агент Azure Pipelines.

    Установка расширения агента Azure Pipelines

  4. В колонке "Установка расширения " укажите имя используемой подписки Azure Pipelines. Например, если URL-адрес имеется https://dev.azure.com/contoso, просто укажите contoso.

  5. Укажите имя проекта и имя группы развертывания.

  6. При необходимости укажите имя агента. Если он не указан, он использует имя виртуальной машины, добавленное с -DG.

  7. Введите личный маркер доступа (PAT), используемый для проверки подлинности в Azure Pipelines.

  8. При необходимости укажите разделенный запятыми список тегов, которые будут настроены в агенте. Теги не учитывает регистр, и каждый из них должен быть не более 256 символов.

  9. Нажмите кнопку "ОК ", чтобы начать установку агента на этой виртуальной машине.

  10. Добавьте расширение к любым другим виртуальным машинам, которые вы хотите включить в эту группу развертывания.

Использование задачи развертывания шаблона ARM

Внимание

Эти инструкции относятся к версии 2 задачи. Переключите версию задачи с 3 на 2.

Задачу развертывания шаблона ARM можно использовать для развертывания шаблона Azure Resource Manager (ARM), который устанавливает расширение виртуальной машины агента Azure Azure Pipelines при создании виртуальной машины или обновить группу ресурсов, чтобы применить расширение после создания виртуальной машины. Кроме того, можно использовать расширенные параметры развертывания задачи развертывания шаблона ARM для развертывания агента в группах развертывания.

Установка расширения виртуальной машины Azure Pipelines Agent с помощью шаблона ARM

Шаблон ARM — это JSON-файл, декларативно определяющий набор ресурсов Azure. Шаблон можно автоматически считывать и ресурсы, подготовленные Azure. В одном шаблоне можно развернуть несколько служб наряду с компонентами, от которых зависит их работа.

Для виртуальной машины Windows создайте шаблон ARM и добавьте элемент ресурсов в Microsoft.Compute/virtualMachine ресурс, как показано ниже.

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|2|3",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Примечание.

В Azure DevOps Server 2022 допустимые значенияAgentMajorVersion:auto|N В Azure DevOps Server 2022.1 и более поздних версий допустимые значенияAgentMajorVersion:auto|2|3

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|N",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Где:

  • Требуется VSTSAccountName . Используемая подписка Azure Pipelines. Пример. Если url-адрес указан https://dev.azure.com/contoso, просто укажите contoso
  • TeamProject является обязательным. Проект с группой развертывания, определенной в ней
  • DeploymentGroup является обязательным. Группа развертывания, в которой будет зарегистрирован агент развертывания
  • Имя агента является необязательным. Если имя виртуальной машины с -DG добавленным значением не указано, будет использоваться
  • Теги являются необязательными . Разделенный запятыми список тегов, которые будут заданы в агенте. Теги не учитывает регистр, и каждый из них должен быть не более 256 символов
  • ТРЕБУЕТся PATToken . Личный маркер доступа, используемый для проверки подлинности в Azure Pipelines для скачивания и настройки агента

Примечание.

Если вы развертываете на виртуальной машине Linux, убедитесь, что type параметр в коде имеет значение TeamServicesAgentLinux.

Устранение неполадок с расширением

Это некоторые известные проблемы с расширением:

  • Файл состояния становится слишком большим: эта проблема возникает на виртуальных машинах Windows; она не наблюдалась на виртуальных машинах Linux. Файл состояния содержит объект JSON, описывающий текущее состояние расширения. Объект является заполнителем для перечисления операций, выполненных до сих пор. Azure считывает этот файл состояния и передает объект состояния в ответ на запросы API. Файл имеет максимальный допустимый размер; Если размер превышает пороговое значение, Azure не может полностью прочитать его и дает ошибку для состояния. На каждом компьютере перезагрузка некоторые операции выполняются расширением (даже если оно может быть установлено успешно ранее), которое добавляет файл состояния. Если компьютер перезагружается большое количество раз, размер файла состояния превышает пороговое значение, что приводит к этой ошибке. Сообщение об ошибке считывается: Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes Обратите внимание, что установка расширения может завершиться успешно, но эта ошибка скрывает фактическое состояние расширения.

    Устранена эта проблема при перезагрузке компьютера (версия 1.27.0.2 расширения Windows и 1.21.0.1 расширения Linux), поэтому при перезагрузке ничего не будет добавлено в файл состояния. Если у вас возникла эта проблема с расширением до внесения исправления (т. е. возникла эта проблема с более ранними версиями расширения), а расширение было автоматически подключено к версиям с исправлением, проблема по-прежнему сохранится. Это связано с обновлением расширения, более новая версия расширения по-прежнему работает с более ранним файлом состояния. В настоящее время вы по-прежнему можете столкнуться с этой проблемой, если вы используете более раннюю версию расширения с флагом для отключения дополнительных автоматических обновлений версии или если большой файл состояния был перенесен из более ранней версии расширения в более новые версии, содержащие исправление, или по какой-либо другой причине. Если это так, вы можете получить прошлое эту проблему, удалите и повторно установите расширение. Удаление расширения очищает весь каталог расширений, поэтому для новой установки будет создан новый файл состояния. Необходимо установить последнюю версию расширения. Это решение является постоянным исправлением, и после выполнения этого не следует снова столкнуться с проблемой.

  • Проблема с пользовательскими данными: эта проблема не связана с расширением, но некоторые клиенты сообщили о путанице в отношении расположения пользовательских данных на виртуальной машине при переключении версий ОС. Мы предлагаем следующее решение. Python 2 устарел, поэтому мы сделали расширение для работы с Python 3. Если вы по-прежнему используете более ранние версии ОС, у которых нет Python 3, установленных по умолчанию, для запуска расширения необходимо установить Python 3 на виртуальной машине или переключиться на версии ОС, для которых установлен Python 3 по умолчанию. На виртуальных машинах Linux пользовательские данные копируются в файл /var/lib/waagent/ovf-env.xml для более ранних версий агента Microsoft Azure Linux и /var/lib/waagent/CustomData для более новых версий агента Microsoft Azure Linux. Похоже, что клиенты, которые жестко закодировали только один из этих двух путей, сталкиваются с проблемами при переключении версий ОС, так как файл не существует в новой версии ОС, но другой файл присутствует. Таким образом, чтобы избежать нарушения подготовки виртуальной машины, следует рассмотреть оба файла в шаблоне, чтобы при сбое, другой должен завершиться успешно.

Дополнительные сведения о шаблонах ARM см. в разделе "Определение ресурсов" в шаблонах Azure Resource Manager.

Чтобы использовать шаблон, выполните следующие действия.

  1. На вкладке "Группы развертывания" Azure Pipelines нажмите кнопку "Создать", чтобы создать новую группу.

  2. Введите имя группы и при необходимости описание, а затем нажмите кнопку "Создать".

  3. На вкладке "Выпуски" Azure Pipelines создайте конвейер выпуска с этапом, содержащим задачу развертывания шаблона ARM.

  4. Укажите параметры, необходимые для задачи, например подписку Azure, имя группы ресурсов, расположение и сведения о шаблоне, а затем сохраните конвейер выпуска.

  5. Создайте выпуск из конвейера выпуска для установки агентов.

Установка агентов с помощью расширенных параметров развертывания

  1. На вкладке "Группы развертывания" Azure Pipelines нажмите кнопку "Создать", чтобы создать новую группу.

  2. Введите имя группы и при необходимости описание, а затем нажмите кнопку "Создать".

  3. На вкладке "Выпуски" Azure Pipelines создайте конвейер выпуска с этапом, содержащим задачу развертывания шаблона ARM.

  4. Выберите задачу и разверните раздел "Дополнительные параметры развертывания" для виртуальных машин . Настройте параметры в этом разделе следующим образом:

    • Включение необходимых компонентов: выберите "Настроить с помощью агента группы развертывания".

    • Конечная точка Azure Pipelines/TFS: выберите существующее подключение к службе Team Foundation Server или TFS, указывающее на целевой объект. Регистрация агента для групп развертывания требует доступа к проекту Visual Studio. Если у вас нет существующего подключения к службе, нажмите кнопку "Добавить " и создать ее сейчас. Настройте его для использования личного маркера доступа (PAT) с область ограниченной группой развертывания.

    • Проект: укажите проект, содержащий группу развертывания.

    • Группа развертывания. Укажите имя группы развертывания, для которой будут зарегистрированы агенты.

    • Скопируйте теги виртуальной машины Azure в агенты: если задано (галочку), все теги, уже настроенные на виртуальной машине Azure, будут скопированы в соответствующий агент группы развертывания. По умолчанию все теги Azure копируются с помощью формата Key: Value. Например, Role: Web.

  5. Укажите другие параметры, необходимые для задачи, например подписку Azure, имя группы ресурсов и расположение, а затем сохраните конвейер выпуска.

  6. Создайте выпуск из конвейера выпуска для установки агентов.

Справка и поддержка