Cómo ejecutar agentes autoalojados con tu pipeline Azure DevOps

Cómo ejecutar agentes autoalojados con tu pipeline Azure DevOps

  • ITOps y DevOps
9 min de lectura Actualizado Dec 10, 2024

Puntos clave: Los agentes autoalojados en Azure DevOps ofrecen ventajas significativas, incluyendo ahorro de costes y flexibilidad para configurar entornos de compilación y lanzamiento. Esta guía detalla los pasos para configurar agentes autoalojados en Windows y Linux, cubriendo los requisitos previos, la instalación y la configuración mediante Personal Access Tokens.

  • Los agentes autoalojados ofrecen minutos ilimitados para las construcciones a un coste menor.
  • Los pasos de configuración incluyen configurar los requisitos previos, crear un Token de Acceso Personal e instalar el agente en los sistemas operativos deseados.

Microsoft Azure Devops

Microsoft Azure —Azure para abreviar— es la plataforma de servicios en la nube de Microsoft que abarca servicios IaaS, PaaS y SaaS, desde infraestructuras virtualizadas simples hasta plataformas de almacenamiento de datos, ML e IA. El servicio Azure DevOps es una de estas ofertas SaaS que ofrece una plataforma DevOps completa que consiste en:

  • Azure Boards (Planificación y gestión del proyecto)
  • Azure Pipelines (CI/CD Pipeline)
  • Azure Repos (Repositories privados Git alojados en la nube)
  • Azure Test Plans (herramientas manuales y de pruebas exploratorias)
  • Azure Artifacts (Artifact Storage)

Estas plataformas son ampliadas por una amplia colección de extensiones para integrar herramientas y plataformas de terceros y extender la funcionalidad. CI/CD pipeline es uno de los componentes clave para impulsar un proceso de desarrollo de software proporcionado por el servicio Azure Pipelines. Azure Pipelines ofrece la opción de utilizar agentes alojados o autoalojados por Microsoft para ejecutar trabajos CI/CD. En este artículo, veremos cómo configurar agentes Azure autoalojados para ser usados en un pipeline. (¿Nuevo en Azure DevOps? Comienza con nuestra guía para principiantes.)

Ventajas de usar agentes autoalojados con Azure DevOps

Aunque pueda parecer un poco extraño utilizar un agente autoalojado con Azure DevOps, ya que es un servicio basado en la nube, son ventajas significativas al optar por un agente autoalojado. Una razón es el coste. Microsoft ofrece:

  • Un trabajo gratuito alojado por Microsoft con 1.800 minutos
  • Un trabajo autoalojado con minutos ilimitados

Aunque es suficiente para desarrollo a pequeña escala, la mayoría de los usuarios inevitablemente necesitan más flexibilidad para ejecutar múltiples compilaciones y lanzamientos simultáneos. En el momento de escribir este artículo, un agente alojado en Microsoft costaba 40 dólares estadounidenses por agente, mientras que uno autoalojado cuesta 15 dólares, ambos con minutos ilimitados. La opción autoalojada proporciona ahorros cuando te necesitas escalar, incluso cuando añades costes de gestión. La segunda razón para elegir el autoalojamiento están la personalización. Tienes la libertad de ejecutar el agente en cualquier sistema operativo compatible, incluyendo Windows, Linux y macOS. Los agentes de Azure alojados por Microsoft permiten te seleccionar un tipo de imagen específico, pero son limitados solo a lo que están disponible de Microsoft. te tienen la flexibilidad de configura agentes y pueden ejecutar múltiples agentes en un solo host para maximizar el uso de recursos.

Configurar un agente auto-hospedado para Azure DevOps

Configurar y ejecutar un agente Azure autoalojado está un proceso relativamente sencillo, siendo el requisito principal ejecutar el agente correcto para el sistema operativo especificado y la arquitectura subyacente. En esta sección Ve cómo ejecutar agentes en una máquina virtual de Windows y Linux.

Pasos para configurar un agente autoalojado en Azure DevOps

Verifica los requisitos previos, el hardware y los permisos de la cuenta

Antes de te Comienza el proceso de configuración, asegúrate de que tu máquina están lista. te necesitarás los siguientes requisitos previos:

  • El sistema operativo y la versión adecuados:
    • Sistema operativo cliente
      • Windows 7 SP1 ESU
      • Windows 8.1
      • Windows 10
      • Windows 11
    • Servidor operativo
      • Windows Server 2012 o superior
  • PowerShell 3.0 o superior. Si te son construir desde un repositorio de Subversion, te debe instala el cliente Subversion en tu máquina.
  • Recomendamos te también instala las herramientas de compilación de Visual Studio (2015 o superiores)
  • No te preocupes por .NET, ya que el software del agente instala su propia versión como parte del proceso de configuración.
  • El te utiliza de hardware depende del tamaño y necesidades de tu equipo. La mayoría del código DevOps de Azure están construido sobre máquinas de clase servidor de 24 núcleos, cada una ejecutando cuatro agentes autoalojados.

Creación de un Token de Acceso Personal (PAT)

El primer paso antes de configurar un agente están Crea un token de acceso personal que se usará para conectar al agente con la Pipeline de Azure. Paso 1. Inicia sesión en la organización de Azure DevOps, abre la configuración de usuario y selecciona "Tokens de acceso personal"

Azure-devops-organization

Abre la ventana de tu terminal y cambia el directorio a la carpeta que contiene el archivo descargado. Infla el archivo para ver el contenido. Primero, te necesitas generar el archivo de configuración del agente usando el script generador de configuración interactivo. Paso 2. En la pantalla de Tokens de Acceso Personal, haz clic en "Nuevo Token" para Crea un token.

Pantalla-personal-access-tokens-

Paso 3. Proporciona un nombre, fecha de caducidad y los permisos necesarios y haz clic en Crea para Crea el PAT.

New PAT for self-hosted agent in Azure DevOps

Nota: Asegúrate de que son concedidos todos los permisos correctos. De lo contrario, te no podrá inicializar la conexión. Si es necesario, te puede configura que el agente tenga acceso completo a Azure DevOps.

full-access-to-azure-devops

Paso 4. Una vez que el token están generado, almacena de forma segura ya que no será accesible más adelante.

pantalla de éxito

Instalación y configuración de los agentes autoalojados

Ahora que hemos creado el token, podemos pasar a configurar el agente. Cualquier configuración de agente puede obtenerse a través de la sección Pipelines Agent Pools en la configuración organizacional del panel de Azure DevOps.

Obtención de instrucciones de configuración del agente

Paso 1. Navega a la Configuración de la Organización y selecciona los grupos de agentes desde la sección de Pipeline.

Pipelines

Paso 2. Selecciona el pool de agentes por defecto. (Si es necesario, selecciona el agente para otros pools disponibles o Crea uno nuevo y añade el agente.)

Pools de agentes

Paso 3. Haz clic en la opción Nuevo Agente para obtener las instrucciones de instalación del agente.

Opción de agente nuevo

Paso 4. Selecciona el sistema operativo y la arquitectura del sistema deseados y sigue las instrucciones proporcionadas.

Prerrequisitos del sistema

Windows Installation of Self-Hosted Agent for Azure

Veamos Ve cómo instala el agente de Azure en Windows 10 en arquitectura X64. Por favor, consulta la guía oficial de agentes de Windows de Microsoft para una lista completa de requisitos previos y especificaciones. Paso 1. Descarga el agente. (Se descargará como archivo zip.)

    Invoke-WebRequest -Uri https://vstsagentpackage.azureedge.net/agent/2.195.1/vsts-agent-win-x64-2.195.1.zip -OutFile vsts-agent-win-x64-2.195.1.zip
Descargar el agente autoalojado para Azure Pipeline

Paso 2. Extrae el agente descargado al destino deseado. están recomienda que el agente están extraiga a una carpeta llamada agentes en la raíz de la unidad C (C:agents).

    # Create directory and navigate to the directory
New-Item -Path "C:" -Name "agents" -ItemType "directory"
Set-Location -Path "C:agents"

# Extract the downloaded zip file
Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("C:vsts-agent-win-x64-2.195.1.zip", "$PWD")

# Verify the extraction
Get-ChildItem
Directorio

Paso 3. Comienza la configuración del agente ejecutando el siguiente comando. (Se está recomendable utilizar el aviso de Powershell elevado.)

    .config.cmd
Command to configura un agente auto-hospedado para Azure

te deberá introducir detalles de configuración como:

  • Server URL (Azure organizational URL)
  • Tipo de autenticación (Aquí, hemos utilizado el token de autenticación creado previamente)
  • Detalles del agente, incluyendo el grupo de agentes y el nombre del agente

Finalmente, especifica si configura el agente como un servicio de Windows. te podrá Ve el Agente de Pipelines de Azure configurado si te navegar a la sección de Servicios en Windows (services.msc).

Sección de servicios

Paso 4. Vuelve a los pools de Agentes en la configuración organizacional y te puedes Ve el agente configurado como el pool por defecto en la pestaña de Agentes.

Pool predeterminado

Instalación en Linux de un agente auto-hospedado para Azure

Instalar y configurar el agente de pipeline en Linux están similar a Windows. Así que, en esta sección, veamos Ve cómo instala el agente en un entorno Ubuntu. Los detalles completos de configuración son disponibles en la documentación de Microsoft. Paso 1. Descargar el agente

    wget https://vstsagentpackage.azureedge.net/agent/2.195.1/vsts-agent-linux-x64-2.195.1.tar.gz
descargar en el entorno ubuntu

Paso 2. Crea una carpeta y extrae el archivo de tar.gz descargado.

    # Create directory and navigate to the directory
mkdir agent
cd agent

# Extract the downloaded zip file
tar zxf ~/Downloads/vsts-agent-linux-x64-2.195.1.tar.gz

# Verify the extraction
ls
creación de directorio

Paso 3. Comienza la configuración del agente ejecutando el siguiente comando.

    ./config.sh
Configuración de Linux para agente auto-hospedado en Azure

Similar a la configuración de Windows, se pedirá a los usuarios que introduzcan los datos del servidor, el tipo de autenticación y el token de autenticación que creamos antes. Luego configura los detalles del agente y, finalmente, el usuario puede Comienza el agente ejecutando el script de run.sh. Paso 4 (Opcional). te puede configura que el agente se ejecute como un servicio del sistema usando el script svc.sh ubicado en el directorio del agente. Especifica el usuario y utiliza el comando instala para configura el servicio.

    sudo ./svc.sh install ubuntu
sudo ./svc.sh start
SVC

Paso 5. Vuelve a los pools de Agentes en la configuración de la organización y luego al pool de Predeterminados de la pestaña de Agentes para verificar que el nuevo agente de Ubuntu está añadido como agente autoalojado.

Pool-de-los-agentes por defecto

Ejecutar tu agente autoalojado en Docker

Ejecutar el agente como contenedor están otra opción que podemos utilizar para ejecutar el agente. Tanto Windows como Linux son compatibles como hosts de contenedores. En la siguiente sección, veamos cómo Crea una imagen de contenedor con el agente de pipeline de Azure y cómo crear la imagen como un contenedor. Utilizaremos el Docker Desktop en un entorno Windows para Crear un contenedor de agente basado en Linux (Ubuntu). Paso 1. Crea una carpeta llamada dockeragent y luego Crea un archivo Dockerfile dentro de la carpeta con ubuntu:18.04 como imagen base con las configuraciones requeridas. (La configuración está disponible a través de la documentación de Microsoft.)

    FROM ubuntu:18.04
 
# To make it easier for build and release pipelines to run apt-get,
# configure apt to not require confirmation (assume the -y argument by default)
ENV DEBIAN_FRONTEND=noninteractive
    RUN echo "APT::Get::Assume-Yes "true";" > /etc/apt/apt.conf.d/90assumeyes
 
RUN apt-get update && apt-get install -y --no-install-recommends 
ca-certificates 
curl 
jq 
git 
iputils-ping 
libcurl4 
libicu60 
libunwind8 
netcat 
libssl1.0 
&& rm -rf /var/lib/apt/lists/*
 
RUN curl -LsS https://aka.ms/InstallAzureCLIDeb | bash 
&& rm -rf /var/lib/apt/lists/*
 
ARG TARGETARCH=amd64¬¬
ARG AGENT_VERSION=2.194.0
 
WORKDIR /azp
RUN if [ "$TARGETARCH" = "amd64" ]; then 
AZP_AGENTPACKAGE_URL=https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz; 
else 
AZP_AGENTPACKAGE_URL=https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-${TARGETARCH}-${AGENT_VERSION}.tar.gz; 
fi; 
curl -Ls¬S "$AZP_AGENTPACKAGE_URL" | tar -xz
 
COPY ./start.sh .
RUN chmod +x start.sh
 
ENTRYPOINT [ "./start.sh" ]

Paso 2. Crea el script de inicio (start.sh) y colócalo dentro de la misma carpeta. Asegúrate de que los finales de línea son configurados como finales de línea estilo Unix (LF).

    fi
 
AZP_TOKEN_FILE=/azp/.token
echo -n $AZP_TOKEN > "$AZP_TOKEN_FILE"
fi

unset AZP_TOKEN
 
if [ -n "$AZP_WORK" ]; then
mkdir -p "$AZP_WORK"
    fi
 
export AGENT_ALLOW_RUNASROOT="1"
 
cleanup() {
if [ -e config.sh ]; then
print_header "Cleanup. Removing Azure Pipelines agent..."
 
# If the agent has some running jobs, the configuration removal process will fail.
# So, give it some time to finish the job.
while true; do
./config.sh remove --unattended --auth PAT --token $(cat "$AZP_TOKEN_FILE") && break
 
echo "Retrying in 30 seconds..."
sleep 30
done
fi
}
 
print_header() {¬
lightcyan='�33[1;36m'
nocolor='�33[0m'
echo -e "${lightcyan}$1${nocolor}"
}
 
# Let the agent ignore the token env variables
export VSO_AGENT_IGNORE=AZP_TOKEN,AZP_TOKEN_FILE
 
source ./env.sh
 
print_header "1. Configuring Azure Pipelines agent..."
 
./config.sh --unattended 
--agent "${AZP_AGENT_NAME:-$(hostname)}" 
--url "$AZP_URL" 
--auth PAT 
--token $(cat "$AZP_TOKEN_FILE") 
--pool "${AZP_POOL:-Default}" 
--work "${AZP_WORK:-_work}" 
--replace 
--acceptTeeEula & wait $!
 
print_header "2. Running Azure Pipelines agent..."
 
trap 'cleanup; exit 0' EXIT
trap 'cleanup; exit 130' INT
trap 'cleanup; exit 143' TERM
 
# To be aware of TERM and INT signals call run.sh
    # Running it with the --once flag at the end will shut down the agent after the build is executed
./run.sh "$@" & wait $!

Paso 3. Construye la imagen ejecutando el siguiente comando en la carpeta dockeragent.

    docker build -t dockeragent:latest .
docker-agent-latest

Paso 4. Crea un contenedor usando el comando docker run con la imagen docker recién creada. Podemos pasar variables de entorno al crear el contenedor. En este caso, pasaremos la URL del servidor (AZP_URL), el token PAT (AZP_TOKEN) y el nombre del agente (AZP_AGENT_NAME) como variables.

    docker run -e AZP_URL=https://dev.azure.com/ -e AZP_TOKEN= -e AZP_AGENT_NAME=docker-agent-01 dockeragent:latest
Azure-pipelines-docker

Paso 5. Podemos verificar si el contenedor está añadido como agente mirando el pool de agentes por defecto en el panel de Azure DevOps.

agente-pool-predeterminado

Self-hosted agents for Azure DevOps

Los agentes autoalojados en Azure DevOps Pipelines ofrecen ahorros de costes y mayor flexibilidad para configurar y ejecutar agentes de compilación y liberación en cualquier entorno compatible. Estos agentes de pipeline pueden usarse para extiende la funcionalidad de la pipeline CI/CD desde la ejecución en servidores bare-metal hasta VMs e incluso como contenedores.

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.