Подготовка агентов для групп развертывания
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Группа развертывания — это логическая группа целевых компьютеров развертывания для классических конвейеров выпуска в Azure Pipelines. Для каждого целевого сервера в группе развертывания требуется установить агент развертывания. В этой статье объясняется, как установить и подготовить агент развертывания на каждой физической или виртуальной машине в группе развертывания.
Агент можно установить на целевом компьютере одним из следующих способов:
- Запустите скрипт, который создается при создании группы развертывания.
- Установите расширение виртуальной машины Azure Агента Azure Pipelines на виртуальной машине.
- Используйте задачу AzureResourceGroupDeploymentV2 в конвейере выпуска для динамического создания группы развертывания и подготовки агентов.
В следующих разделах приведены шаги по реализации каждого метода.
Необходимые компоненты
- Организация и проект Azure DevOps. Сведения о создании организации или проекта см. в статье "Создание новой организации " или "Создание проекта" в Azure DevOps.
- Доступ по крайней мере к одному целевому компьютеру развертывания Windows или Linux с соответствующими разрешениями.
- Для методов установки агента Azure Pipelines учетная запись Azure и подписка с разрешениями на создание виртуальных машин Azure и управление ими. Если у вас нет учетной записи Azure, зарегистрируйтесь для получения бесплатной учетной записи.
Запуск скрипта установки на целевых серверах
При создании группы развертывания создается скрипт, который можно запустить на каждом целевом компьютере для регистрации сервера и установки агента. Чтобы установить агент с помощью созданного скрипта регистрации:
В проекте Azure DevOps выберите группы развертывания Pipelines>.
На экране "Группы развертывания" выберите "Создать" или выберите "Добавить группу развертывания", если эта группа развертывания является первой в проекте.
Введите имя группы развертывания и необязательное описание, а затем нажмите кнопку "Создать".
На следующем экране выберите Windows или Linux , чтобы зарегистрировать тип целевого объекта. Создается скрипт регистрации.
Выберите Использовать личный маркер доступа в сценарии для проверки подлинности. Дополнительные сведения см. в разделе "Использование личных маркеров доступа".
Выберите " Копировать сценарий" в буфер обмена.
На каждом целевом компьютере войдите с помощью учетной записи с правами администратора.
Запустите скопированный скрипт, чтобы зарегистрировать компьютер и установить агент. Для компьютеров Windows используйте командную строку PowerShell с повышенными привилегиями.
По мере выполнения скрипта:
Чтобы назначить теги, позволяющие ограничить развертывание определенными серверами в задании группы развертывания, введите Y при появлении запроса на ввод тегов, а затем введите тег или теги для этой виртуальной машины.
Теги ограничены 256 символами, являются нечувствительными к регистру и не ограничивают количество тегов, которые можно использовать.
При появлении запроса учетной записи пользователя примите значения по умолчанию.
Примечание.
Если при запуске скрипта не удалось создать безопасный канал, выполните следующую команду в командной строке Администратора PowerShell:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
После настройки каждого целевого сервера скрипт должен вернуть сообщение Service vstsagent.{organization-name}.{computer-name} started successfully
.
На вкладке "Целевые объекты" на странице групп развертывания Azure Pipelines можно убедиться, что агент запущен. При необходимости обновите страницу.
Установка расширения виртуальной машины агента Azure Pipelines агента Azure
При использовании виртуальных машин Azure в качестве компьютеров развертывания можно установить расширение агента Azure Pipelines на каждой виртуальной машине. Расширение автоматически регистрирует агент с указанной группой развертывания в проекте Azure DevOps.
Чтобы установить агент с помощью расширения, сначала создайте группу развертывания:
- В проекте Azure DevOps выберите группы развертывания Pipelines>.
- На экране "Группы развертывания" выберите "Создать" или выберите "Добавить группу развертывания", если эта группа развертывания является первой в проекте.
- Введите имя группы развертывания и необязательное описание, а затем нажмите кнопку "Создать".
В портал Azure установите расширение агента Azure Pipelines на каждой целевой виртуальной машине:
На странице виртуальной машины выберите "Параметры>расширения и приложения " в области навигации слева.
На вкладке "Расширение" нажмите кнопку "Добавить".
На странице "Установка расширения" найдите и выберите агент Azure Pipelines, а затем нажмите кнопку "Далее".
На экране "Настройка расширения агента Azure Pipelines" укажите следующие сведения:
- URL-адрес организации Azure DevOps: введите URL-адрес организации Azure DevOps, например
https://dev.azure.com/contoso
. - Командный проект: введите имя проекта, например myProject.
- Группа развертывания. Введите имя созданной группы развертывания.
- Имя агента: при необходимости введите имя агента. Если вы ничего не вводите, агент называется именем виртуальной машины, добавленным с
-DG
. - Личный маркер доступа: введите личный маркер доступа (PAT), который используется для проверки подлинности в Azure Pipelines.
- Теги. При необходимости укажите разделенный запятыми список тегов для настройки агента. Теги ограничены 256 символами, являются нечувствительными к регистру и не ограничивают количество тегов, которые можно использовать.
- URL-адрес организации Azure DevOps: введите URL-адрес организации Azure DevOps, например
Выберите Проверка и создание, а после завершения проверки нажмите Создать.
Использование задачи AzureResourceGroupDeploymentV2
Задачу AzureResourceGroupDeploymentV2 можно использовать для развертывания шаблона Azure Resource Manager (ARM). Шаблон может установить расширение агента Azure Pipelines при создании виртуальной машины Azure или обновить группу ресурсов, чтобы применить расширение после создания виртуальной машины.
Кроме того, для развертывания агента можно использовать расширенные параметры развертывания задачи AzureResourceGroupDeployment.
Создание группы развертывания
Сначала создайте группу развертывания:
- В проекте Azure DevOps выберите группы развертывания Pipelines>.
- На экране "Группы развертывания" выберите "Создать" или выберите "Добавить группу развертывания", если эта группа развертывания является первой в проекте.
- Введите имя группы развертывания и необязательное описание, а затем нажмите кнопку "Создать".
Установка агента с помощью шаблона ARM
Шаблон ARM — это JSON-файл, декларативно определяющий набор ресурсов Azure. Azure автоматически считывает шаблон и подготавливает ресурсы. Можно развернуть несколько служб и их зависимостей в одном шаблоне.
Чтобы зарегистрировать и установить агент развертывания с помощью шаблона 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')]"
}
}
}
]
Примечание.
Для виртуальной машины type
Linux параметр properties
в коде должен быть TeamServicesAgentLinux
.
Примечание.
В Azure DevOps Server 2022.1 и более поздних версий допустимые значенияAgentMajorVersion
:auto|2|3
В Azure DevOps Server 2022.0 и более ранних версий допустимые значенияAgentMajorVersion
:auto|N
"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-адрес Azure DevOps имеет значениеhttps://dev.azure.com/contoso
, просто укажитеcontoso
TeamProject
— это обязательный проект, имеющий группу развертывания, определенную в ней.DeploymentGroup
— это требуемая группа развертывания для регистрации агента.AgentName
— необязательное имя агента. Если это не указано, агент получает имя виртуальной машины с-DG
добавленным.Tags
— необязательный список тегов с разделителями-запятыми для задания агента. Теги ограничены 256 символами, являются нечувствительными к регистру и не ограничивают количество тегов, которые можно использовать.PATToken
— это обязательный PAT для проверки подлинности в Azure Pipelines для скачивания и настройки агента.
Дополнительные сведения о шаблонах ARM см. в разделе "Определение ресурсов" в шаблонах Azure Resource Manager.
Использование шаблона в конвейере выпуска
Создайте конвейер выпуска:
- Выберите "Конвейеры выпусков>" в меню слева и выберите новый>конвейер выпуска.
- На вкладке "Выпуски" Azure Pipelines создайте конвейер выпуска с этапом, содержащим задачу развертывания шаблона ARM.
- Этот шаблон использует версию 2 задачи, поэтому на экране параметров развертывания группы ресурсов Azure измените версию задачи с 3.* на 2.*.
- Укажите параметры, необходимые для задачи, например подписку Azure, имя группы ресурсов, расположение, сведения о шаблоне и действия, которые необходимо предпринять.
- Сохраните конвейер выпуска и создайте выпуск из конвейера для установки агентов.
Установка агентов с помощью расширенных параметров развертывания
Кроме того, агент можно установить с помощью расширенных параметров развертывания. Выполните описанные выше действия, но на экране параметров развертывания группы ресурсов Azure разверните раздел "Дополнительные параметры развертывания" для виртуальных машин.
В разделе "Включить предварительные требования" выберите "Настройка с помощью агента группы развертывания".
Укажите следующие необходимые параметры и параметры:
Подключение службы Azure Pipelines: выберите существующее подключение службы, указывающее на целевой объект.
Если у вас нет существующего подключения к службе, нажмите кнопку "Создать " и создайте ее. Дополнительные сведения см. в разделе "Создание подключения к службе". Настройте подключение службы для использования PAT с областью, ограниченной группой развертывания.
Командный проект: выберите проект, содержащий группу развертывания.
Группа развертывания. Выберите группу развертывания, чтобы зарегистрировать агенты.
Выберите " Копировать теги виртуальной машины Azure" в агенты , чтобы скопировать все теги, уже настроенные на виртуальной машине Azure, в соответствующий агент группы развертывания.
По умолчанию все теги Azure копируются с помощью
Key: Value
формата, напримерRole: Web
.
Сохраните конвейер и создайте выпуск для установки агентов.
Устранение неполадок с расширением
Существуют некоторые известные проблемы с расширением агента Azure Pipelines.
Файл состояния слишком велик
Эта проблема может возникать на виртуальных машинах Windows. Файл состояния содержит объект 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 устарел, а расширение агента Azure Pipelines работает с Python 3. Если вы по-прежнему используете версии ОС, которые не установлены Python 3 по умолчанию, для запуска расширения следует установить Python 3 на виртуальной машине или переключиться на версию ОС, установленную по умолчанию. В противном случае может возникнуть путаница в отношении пользовательского расположения данных на виртуальной машине при переключении версий ОС.
На виртуальных машинах Linux пользовательские данные копируются в /var/lib/waagent/ovf-env.xml для более ранних версий агента и в /var/lib/waagent/CustomData для более новых версий. Если вы жестко закодируете только один из этих двух путей, при переключении версий ОС могут возникнуть проблемы, так как один из путей не существует в новой версии ОС, хотя другой путь присутствует. Чтобы избежать нарушения подготовки виртуальной машины, рассмотрите возможность использования обоих путей в шаблоне, чтобы при сбое одного из них выполнялось успешно.
Справка и поддержка
- Ознакомьтесь с советами по устранению неполадок.
- Получите советы по Stack Overflow.
- Опубликуйте свои вопросы, найдите ответы или предложите функцию в Сообщество разработчиков Azure DevOps.
- Получите поддержку Azure DevOps.