Compartir a través de


Aprovisionamiento de agentes para grupos de implementación

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

Un grupo de implementación es un grupo lógico de máquinas de destino de implementación para canalizaciones de versión clásica en Azure Pipelines. Cada servidor de destino de un grupo de implementación requiere que se instale un agente de implementación. En este artículo se explica cómo instalar y aprovisionar el agente de implementación en cada máquina física o virtual (VM) de un grupo de implementación.

Puede instalar el agente en una máquina de destino de cualquiera de las maneras siguientes:

  • Ejecute el script que genera al crear el grupo de implementación.
  • Instale la extensión de máquina virtual de Azure Agent de Azure Pipelines en la máquina virtual.
  • Use la tarea AzureResourceGroupDeploymentV2 en la canalización de versión para crear un grupo de implementación y aprovisionar agentes dinámicamente.

En las secciones siguientes se proporcionan pasos para implementar cada método.

Requisitos previos

Ejecución del script de instalación en los servidores de destino

Al crear un grupo de implementación, se genera un script que se puede ejecutar en cada máquina de destino para registrar el servidor e instalar el agente. Para instalar el agente mediante el script de registro generado:

  1. En el proyecto de Azure DevOps, seleccione Grupos de implementación de canalizaciones>.

  2. En la pantalla Grupos de implementación , seleccione Nuevo o seleccione Agregar un grupo de implementación si este grupo de implementación es el primero del proyecto.

  3. Escriba un nombre de grupo de implementación y una descripción opcional y, a continuación, seleccione Crear.

  4. En la pantalla siguiente, seleccione Windows o Linux para el tipo de destino que se va a registrar. Se genera un script de registro.

  5. Seleccione Usar un token de acceso personal en el script para la autenticación. Para obtener más información, consulte Uso de tokens de acceso personal.

  6. Seleccione Copiar el script en el Portapapeles.

  7. En cada máquina de destino, inicie sesión con una cuenta con permisos administrativos.

  8. Ejecute el script copiado para registrar la máquina e instalar el agente. En el caso de las máquinas Windows, use un símbolo del sistema de PowerShell con privilegios elevados.

    A medida que se ejecuta el script:

    • Para asignar etiquetas que le permiten limitar las implementaciones a determinados servidores de un trabajo de grupo de implementación, escriba Y cuando se le pida que escriba etiquetas y, a continuación, escriba una etiqueta o etiquetas para esta máquina virtual.

      Las etiquetas están limitadas a 256 caracteres cada una, no distinguen mayúsculas de minúsculas y no hay ningún límite para el número de etiquetas que puede usar.

    • Cuando se le solicite una cuenta de usuario, acepte los valores predeterminados.

    Nota:

    Si recibe un error al ejecutar el script que no se pudo crear un canal seguro, ejecute el siguiente comando en el símbolo del sistema de PowerShell de administrador:

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

Después de configurar cada servidor de destino, el script debe devolver el mensaje Service vstsagent.{organization-name}.{computer-name} started successfully.

En la pestaña Destinos de la página Grupos de implementación de Azure Pipelines, puede comprobar que el agente se está ejecutando. Si es necesario, actualice la página.

Instalación de la extensión de máquina virtual de Azure Pipelines Agent de Azure

Si usa máquinas virtuales de Azure como máquinas de implementación, puede instalar la extensión agente de Azure Pipelines en cada máquina virtual. La extensión registra automáticamente el agente con el grupo de implementación especificado en el proyecto de Azure DevOps.

Para instalar el agente mediante la extensión , cree primero el grupo de implementación:

  1. En el proyecto de Azure DevOps, seleccione Grupos de implementación de canalizaciones>.
  2. En la pantalla Grupos de implementación , seleccione Nuevo o seleccione Agregar un grupo de implementación si este grupo de implementación es el primero del proyecto.
  3. Escriba un nombre de grupo de implementación y una descripción opcional y, a continuación, seleccione Crear.

En Azure Portal, instale la extensión agente de Azure Pipelines en cada máquina virtual de destino:

  1. En la página de la máquina virtual, seleccione Extensiones y aplicaciones de configuración>en el panel de navegación izquierdo.

  2. En la pestaña Extensión , seleccione Agregar.

  3. En la página Instalar una extensión , busque y seleccione Agente de Azure Pipelines y, a continuación, seleccione Siguiente.

    Captura de pantalla que muestra la selección de la extensión agente de Azure Pipelines.

  4. En la pantalla Configurar la extensión del agente de Azure Pipelines, especifique la siguiente información:

    • Dirección URL de la organización de Azure DevOps: escriba la dirección URL de la organización de Azure DevOps, como https://dev.azure.com/contoso.
    • Proyecto de equipo: escriba el nombre del proyecto, como myProject.
    • Grupo de implementación: escriba el nombre del grupo de implementación que creó.
    • Nombre del agente: opcionalmente, escriba un nombre para el agente. Si no escribe nada, el agente se denomina el nombre de la máquina virtual anexado con -DG.
    • Token de acceso personal: escriba el token de acceso personal (PAT) que se usará para autenticarse en Azure Pipelines.
    • Etiquetas: opcionalmente, especifique una lista separada por comas de etiquetas para configurar en el agente. Las etiquetas están limitadas a 256 caracteres cada una, no distinguen mayúsculas de minúsculas y no hay ningún límite para el número de etiquetas que puede usar.
  5. Seleccione Revisar y crear y, una vez superada la validación, seleccione Crear.

Uso de la tarea AzureResourceGroupDeploymentV2

Puede usar la tarea AzureResourceGroupDeploymentV2 para implementar una plantilla de Azure Resource Manager (ARM). La plantilla puede instalar la extensión agente de Azure Pipelines al crear una máquina virtual de Azure o actualizar el grupo de recursos para aplicar la extensión después de crear una máquina virtual.

Como alternativa, puede usar las opciones de implementación avanzadas de la tarea AzureResourceGroupDeployment para implementar el agente.

Creación de un grupo de implementación

En primer lugar, cree el grupo de implementación:

  1. En el proyecto de Azure DevOps, seleccione Grupos de implementación de canalizaciones>.
  2. En la pantalla Grupos de implementación , seleccione Nuevo o seleccione Agregar un grupo de implementación si este grupo de implementación es el primero del proyecto.
  3. Escriba un nombre de grupo de implementación y una descripción opcional y, a continuación, seleccione Crear.

Uso de una plantilla de ARM para instalar el agente

Una plantilla de ARM es un archivo JSON que define mediante declaración un conjunto de recursos de Azure. Azure lee automáticamente la plantilla y aprovisiona los recursos. Puede implementar varios servicios y sus dependencias en una sola plantilla.

Para registrar e instalar el agente de implementación mediante una plantilla de ARM, agregue un elemento resources en el Microsoft.Compute/virtualMachine recurso, como se muestra en el código siguiente.

"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:

Para una máquina virtual Linux, el type parámetro de properties en el código debe ser TeamServicesAgentLinux.

Nota:

En Azure DevOps Server 2022.1 y versiones posteriores, los valores permitidos para AgentMajorVersion son auto|2|3. En Azure DevOps Server 2022.0 y versiones anteriores, los valores permitidos para AgentMajorVersion son 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')]"
     }
   }
  }
]

En el código anterior:

  • VSTSAccountName es la organización de Azure Pipelines necesaria que se va a usar. Por ejemplo, si la dirección URL de Azure DevOps es https://dev.azure.com/contoso, simplemente especifique. contoso
  • TeamProject es el proyecto necesario que tiene definido el grupo de implementación.
  • DeploymentGroup es el grupo de implementación necesario para registrar el agente.
  • AgentName es un nombre de agente opcional. Si no se especifica, el agente recibe el nombre de la máquina virtual con -DG anexado.
  • Tags es una lista opcional separada por comas de etiquetas que se va a establecer en el agente. Las etiquetas están limitadas a 256 caracteres cada una, no distinguen mayúsculas de minúsculas y no hay ningún límite para el número de etiquetas que puede usar.
  • PATToken es el PAT necesario para autenticarse en Azure Pipelines para descargar y configurar el agente.

Para más información sobre las plantillas de ARM, consulte Definición de recursos en plantillas de Azure Resource Manager.

Uso de la plantilla en una canalización de versión

Cree una canalización de versión:

  1. Seleccione Pipelines Releases (Versiones de canalizaciones>) en el menú de la izquierda y, a continuación, seleccione Nueva>canalización de versión.
  2. En la pestaña Versiones de Azure Pipelines, cree una canalización de versión con una fase que contenga la tarea de implementación de plantillas de ARM.
  3. Esta plantilla usa la versión 2 de la tarea, por lo que, en la pantalla de configuración de implementación del grupo de recursos de Azure, cambie la versión de la tarea de 3.* a 2.*.
  4. Proporcione los parámetros necesarios para la tarea, como la suscripción de Azure, el nombre del grupo de recursos, la ubicación, la información de plantilla y la acción que se deben realizar.
  5. Guarde la canalización de versión y cree una versión de la canalización para instalar los agentes.

Instalación de agentes mediante las opciones de implementación avanzadas

Como alternativa, puede instalar el agente mediante opciones de implementación avanzadas. Siga los pasos anteriores, pero en la pantalla configuración de implementación del grupo de recursos de Azure, expanda la sección Opciones de implementación avanzadas para máquinas virtuales.

  1. En Habilitar requisitos previos, seleccione Configurar con el agente de grupo de implementación.

  2. Proporcione los siguientes parámetros y configuraciones necesarios:

    • Conexión del servicio Azure Pipelines: seleccione una conexión de servicio existente que apunte al destino.

      Si no tiene una conexión de servicio existente, seleccione Nuevo y cree una. Para más información, consulte Creación de una conexión de servicio. Configure la conexión de servicio para usar un PAT con ámbito restringido al grupo de implementación.

    • Proyecto de equipo: seleccione el proyecto que contiene el grupo de implementación.

    • Grupo de implementación: seleccione el grupo de implementación en el que registrar los agentes.

    • Seleccione Copiar etiquetas de máquina virtual de Azure en agentes para copiar las etiquetas ya configuradas en la máquina virtual de Azure en el agente del grupo de implementación correspondiente.

      De forma predeterminada, todas las etiquetas de Azure se copian con el Key: Value formato , por ejemplo Role: Web.

  3. Guarde la canalización y cree una versión para instalar los agentes.

Solución de problemas de la extensión

Hay algunos problemas conocidos con la extensión del agente de Azure Pipelines.

El archivo de estado es demasiado grande

Este problema puede producirse en máquinas virtuales Windows. 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 máximo, Azure no puede leerlo por completo y proporciona un error para el estado.

Aunque la extensión puede instalarse inicialmente, cada vez que la máquina reinicia la extensión realiza algunas operaciones que se anexan al archivo de estado. Si la máquina se reinicia muchas veces, el tamaño del archivo de estado puede superar el umbral, lo que provoca el error Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes. Aunque la instalación de la extensión puede realizarse correctamente, este error oculta el estado real de la extensión.

Este problema de reinicio de la máquina se ha corregido a partir de la versión 1.27.0.2 de la extensión de Windows y 1.21.0.1 de la extensión de Linux. Un reinicio ahora no agrega nada al archivo de estado. Sin embargo, si tenía este problema con una versión anterior de la extensión y la extensión se actualizó automáticamente a la versión fija, el problema puede persistir. Las versiones más recientes de la extensión pueden seguir funcionando con un archivo de estado anterior.

Puede enfrentar 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 grande se llevó de una versión anterior a una versión fija. Si es así, puede resolver el problema desinstalando y reinstalando la extensión. Al desinstalar la extensión se limpia todo el directorio de extensión y se crea un nuevo archivo de estado para una instalación nueva de la versión más reciente.

Problema de datos personalizados

Python 2 está en desuso y la extensión del agente de Azure Pipelines funciona con Python 3. Si sigue usando versiones 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 una versión del sistema operativo que tenga Python 3 instalado de forma predeterminada. De lo contrario, puede haber confusión con respecto a la ubicación de datos personalizada en la máquina virtual al cambiar las versiones del sistema operativo.

En máquinas virtuales Linux, los datos personalizados se copian en /var/lib/waagent/ovf-env.xml para versiones anteriores del agente y en /var/lib/waagent/CustomData para versiones más recientes. Si solo codifica una de estas dos rutas de acceso, es posible que se produzcan problemas al cambiar las versiones del sistema operativo porque una de las rutas de acceso no existe en la nueva versión del sistema operativo, aunque la otra ruta de acceso está presente. Para evitar interrumpir el aprovisionamiento de máquinas virtuales, considere la posibilidad de usar ambas rutas de acceso en la plantilla para que, si se produce un error, la otra debe realizarse correctamente.

Ayuda y soporte técnico