Aprovisionamiento de agentes para grupos de implementación
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Los grupos de implementación facilitan la definición de grupos lógicos de máquinas de destino para la implementación, e instalan el agente requerido en cada máquina. En este artículo se explica cómo crear un grupo de implementación e instalar y aprovisionar el agente en cada máquina virtual o física del grupo de implementación.
Puede instalar el agente de cualquiera de estas maneras:
- Ejecute el script que se genera automáticamente al crear un grupo de implementación.
- Instale la extensión de máquina virtual de Azure Pipelines Agent en cada una de las máquinas virtuales.
- Use la tarea Template Deployment de ARM en la canalización de versión.
Para obtener información sobre agentes y canalizaciones, consulte:
Ejecución del script de instalación en los servidores de destino
En la pestaña Grupos de implementación de Azure Pipelines, elija +Nuevo para crear un nuevo grupo.
Escriba un nombre para el grupo y, si lo desea, una descripción y seleccione Crear.
En la sección Registrar máquinas mediante la línea de comandos de la página siguiente, seleccione el sistema operativo de la máquina de destino.
Seleccione Usar un token de acceso personal en el script para la autenticación. Más información.
Seleccione Copiar el script al portapapeles.
Inicie sesión en cada máquina de destino a su vez a través de la cuenta con los permisos adecuados y:
Abra un símbolo del sistema de PowerShell de administrador, pegue el script que copió y, a continuación, ejecútelo para registrar la máquina con este grupo.
Si recibe un error al ejecutar el script que indica que no se pudo crear un canal seguro, ejecute este comando en el símbolo del sistema de PowerShell de administrador:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Cuando se le pida que configure etiquetas para el agente, pulse
Y
y escriba las etiquetas que usará para identificar subconjuntos de las máquinas del grupo para implementaciones parciales.Las etiquetas que asigne permiten limitar la implementación a servidores específicos cuando el grupo de implementación se use en un trabajo Ejecutar en grupo de máquinas.
Cuando se le solicite la cuenta de usuario, presione Intro para aceptar los valores predeterminados.
Espere a que el script finalice con el mensaje
Service vstsagent.{organization-name}.{computer-name} started successfully
.
En la página Grupos de implementación de Azure Pipelines, abra la pestaña Máquinas y compruebe que los agentes se están ejecutando. Si las etiquetas configuradas no se ven, recargue la página.
Instalación de la extensión de máquina virtual de Azure Pipelines Agent de Azure
En la pestaña Grupos de implementación de Azure Pipelines, elija +Nuevo para crear un nuevo grupo.
Escriba un nombre para el grupo y, si lo desea, una descripción y seleccione Crear.
En Azure Portal, para cada máquina virtual que se incluirá en el grupo de implementación, abra la hoja Extensión , seleccione + Agregar para abrir la lista Nuevo recurso y seleccione Agente de Azure Pipelines.
En la hoja Instalar extensión, especifique el nombre de la suscripción de Azure Pipelines que se va a usar. Por ejemplo, si la dirección URL es
https://dev.azure.com/contoso
, especifique contoso.Especifique el nombre del proyecto y el nombre del grupo de implementación.
Si lo desea, especifique un nombre para el agente. Si no se especifica, usa el nombre de la máquina virtual anexado con
-DG
.Escriba el token de acceso personal (PAT) que se usará para la autenticación en Azure Pipelines.
Si lo desea, especifique una lista separada por comas de etiquetas que se configurarán en el agente. Las etiquetas no distinguen mayúsculas de minúsculas y cada una no debe tener más de 256 caracteres.
Elija Aceptar para iniciar la instalación del agente en esta máquina virtual.
Agregue la extensión a cualquier otra máquina virtual que quiera incluir en este grupo de implementación.
Uso de la tarea Template Deployment de ARM
Importante
Estas instrucciones hacen referencia a la versión 2 de la tarea. Cambie la versión de la tarea de 3 a 2.
Puede usar la tarea Template Deployment de ARM para implementar una plantilla de Azure Resource Manager (ARM) que instala la extensión de máquina virtual de Azure Pipelines Agent a medida que crea una máquina virtual o para actualizar el grupo de recursos para aplicar la extensión una vez creada la máquina virtual. Como alternativa, puede usar las opciones de implementación avanzadas de la tarea Template Deployment de ARM para implementar el agente en grupos de implementación.
Instalación de la extensión de máquina virtual de Azure "Agente de Azure Pipelines" mediante una plantilla de ARM
Una plantilla de ARM es un archivo JSON que define mediante declaración un conjunto de recursos de Azure. Azure puede leer automáticamente la plantilla y los recursos aprovisionados. En una plantilla, puede implementar varios servicios junto con sus dependencias.
Para una máquina virtual Windows, cree una plantilla de ARM y agregue un elemento en el recurso Microsoft.Compute/virtualMachine
, como se muestra aquí:
"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')]"
}
}
}
]
Nota:
En Azure DevOps Server 2022, los valores permitidos para AgentMajorVersion
son auto|N
. En Azure DevOps Server 2022.1 y versiones posteriores, los valores permitidos para AgentMajorVersion
son 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')]"
}
}
}
]
Donde:
- VSTSAccountName es obligatorio. La suscripción de Azure Pipelines que se va a usar. Ejemplo: si la dirección URL es
https://dev.azure.com/contoso
, especifique simplementecontoso
- TeamProject es obligatorio. El proyecto que tiene definido el grupo de implementación dentro de él
- DeploymentGroup es obligatorio. Grupo de implementación en el que se registrará el agente de implementación
- AgentName es opcional. Si no se especifica, se usará el nombre de la máquina virtual con
-DG
anexado - Tags es opcional. Lista separada por comas de etiquetas que se establecerán en el agente. Las etiquetas no distinguen mayúsculas de minúsculas y cada una no debe tener más de 256 caracteres
- PATToken es obligatorio. Token de acceso personal que se va a usar para autenticarse en Azure Pipelines para descargar y configurar el agente
Nota:
Si va a implementar en una máquina virtual Linux, asegúrese de que el parámetro type
del código es TeamServicesAgentLinux
.
Solución de problemas de la extensión
Estos son algunos problemas conocidos con la extensión:
Archivo de estado demasiado grande: este problema se produce en máquinas virtuales Windows; no se ha observado en máquinas virtuales Linux. El archivo de estado contiene un objeto JSON que describe el estado actual de la extensión. El objeto es un marcador de posición para enumerar las operaciones realizadas hasta ahora. Azure lee este archivo de estado y pasa el objeto de estado como respuesta a las solicitudes de API. El archivo tiene un tamaño máximo permitido; si el tamaño supera el umbral, Azure no puede leerlo completamente y proporciona un error para el estado. En cada reinicio de la máquina, la extensión realiza algunas operaciones (aunque puede instalarse correctamente anteriormente), que anexan el archivo de estado. Si la máquina se reinicia un gran número de veces, el tamaño del archivo de estado supera el umbral, lo que provoca este error. El mensaje de error comunica:
Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes
Tenga en cuenta que es posible que la instalación de la extensión se haya realizado correctamente, pero este error oculta el estado real de la extensión.Hemos corregido este problema para los reinicios de la máquina (versión
1.27.0.2
para la extensión de Windows y1.21.0.1
para la extensión de Linux en adelante), por lo que, en un reinicio, no se agregará nada al archivo de estado. Si tenía este problema con la extensión antes de que se realizara la corrección (es decir, tenía este problema con versiones anteriores de la extensión) y la extensión se actualizó automáticamente a las versiones a partir de la corrección, la incidencia seguirá repitiéndose. Esto se debe a que en la actualización de la extensión, la versión más reciente de la extensión sigue funcionando con el archivo de estado anterior. Actualmente, podría seguir teniendo este problema si usa una versión anterior de la extensión con la marca para desactivar las actualizaciones automáticas de la versión secundaria, o si un archivo de estado de gran tamaño se llevó de una versión de exención anterior a las versiones más recientes que contienen la corrección o por cualquier otro motivo. Si es así, puede solucionar este problema desinstalando e instalando la extensión de nuevo. Al desinstalar la extensión se limpia todo el directorio de extensión, por lo que se creará un nuevo archivo de estado para la instalación nueva. Debe instalar la versión más reciente de la extensión. Esta solución es una corrección permanente y, después de seguir esto, no debe enfrentar el problema de nuevo.Problema con datos personalizados: este problema no es con la extensión, pero algunos clientes han notificado confusión con respecto a la ubicación de datos personalizados en la máquina virtual al cambiar las versiones del sistema operativo. Se recomienda la siguiente solución alternativa. Python 2 ha quedado en desuso, por lo que hemos hecho que la extensión funcione con Python 3. Si sigue usando versiones anteriores del sistema operativo que no tienen Instalado Python 3 de forma predeterminada, para ejecutar la extensión, debe instalar Python 3 en la máquina virtual o cambiar a versiones del sistema operativo que tengan Instalado Python 3 de forma predeterminada. En las máquinas virtuales Linux, los datos personalizados se copian en el archivo
/var/lib/waagent/ovf-env.xml
de versiones anteriores del agente Linux de Microsoft Azure y en/var/lib/waagent/CustomData
para las versiones más recientes del Agente Linux de Microsoft Azure. Parece que los clientes que han codificado solo una de estos dos trazados se enfrentan a problemas al cambiar las versiones del sistema operativo porque el archivo no existe en la nueva versión, pero el otro archivo está presente. Por lo tanto, para evitar interrumpir el aprovisionamiento de máquinas virtuales, debe tener en cuenta los dos archivos de la plantilla para que, si se produce un error, el otro debería realizarse correctamente.
Para más información sobre las plantillas de ARM, consulte Definición de recursos en plantillas de Azure Resource Manager.
Para usar la plantilla:
En la pestaña Grupos de implementación de Azure Pipelines, elija +Nuevo para crear un nuevo grupo.
Escriba un nombre para el grupo y, si lo desea, una descripción y seleccione Crear.
En la pestaña Versiones de Azure Pipelines, cree una canalización de versión con una fase que contenga la tarea de Template Deployment de ARM.
Proporcione los parámetros necesarios para la tarea, como la suscripción de Azure, el nombre del grupo de recursos, la ubicación y la información de plantilla y, a continuación, guarde la canalización de versión.
Cree una versión desde la canalización de versión para instalar los agentes.
Instalación de agentes mediante las opciones de implementación avanzadas
En la pestaña Grupos de implementación de Azure Pipelines, elija +Nuevo para crear un nuevo grupo.
Escriba un nombre para el grupo y, si lo desea, una descripción y seleccione Crear.
En la pestaña Versiones de Azure Pipelines, cree una canalización de versión con una fase que contenga la tarea de Template Deployment de ARM.
Seleccione la tarea y expanda la sección Opciones de implementación avanzadas para máquinas virtuales. Configure los parámetros de esta sección de la siguiente manera:
Habilitar requisitos previos: seleccione Configurar con el agente de grupo de implementación.
Punto de conexión de Azure Pipelines o TFS: seleccione una conexión de servicio de Team Foundation Server o TFS existente que apunte al destino. El registro del agente para grupos de implementación requiere acceso al proyecto de Visual Studio. Si no tiene una conexión de servicio existente, seleccione Agregar y cree una. Configúrela para usar un token de acceso personal (PAT) con ámbito restringido al grupo de implementación.
Proyecto: especifique el proyecto que contiene el grupo de implementación.
Grupo de implementación: especifique el nombre del grupo de implementación en el que se registrarán los agentes.
Copia de etiquetas de máquina virtual de Azure en agentes: si está activada (marcada), las etiquetas ya configuradas en la máquina virtual de Azure se copiarán en el agente del grupo de implementación correspondiente. De forma predeterminada, todas las etiquetas de Azure se copian con el formato
Key: Value
. Por ejemplo,Role: Web
.
Proporcione los demás parámetros necesarios para la tarea, como la suscripción de Azure, el nombre del grupo de recursos y la ubicación, y guarde la canalización de versión.
Cree una versión desde la canalización de versión para instalar los agentes.
Temas relacionados
- Trabajos del grupo de implementación
- Implementación de un agente en Windows
- Implementación de un agente en macOS
- Implementar un agente en Linux
Ayuda y soporte técnico
- Busque y consulte sugerencias para la resolución de problemas.
- Vea consejos sobre Stack Overflow.
- Publique sus preguntas, busque respuestas o sugiera una característica en la Comunidad de desarrolladores de Azure DevOps.
- Reciba soporte técnico para Azure DevOps.