Cvičení – vytvoření agenta sestavení, který běží v Azure

Dokončeno

V této lekci nakonfigurujete agenta sestavení, kterého můžete použít v Microsoft Azure Pipelines, použijete virtuální počítač, který běží v Microsoft Azure. Poskytujeme virtuální počítač, který můžete použít po dobu trvání tohoto modulu.

V této lekci se naučíte:

  • V Azure vytvoříte virtuální počítač se systémem Ubuntu, který bude sloužit jako váš agent sestavení.
  • Vytvořte fond agentů v Microsoft Azure DevOps.
  • Vytvoříte přístupový token pro ověření vašeho agenta s Azure DevOps.
  • Nakonfigurujte svého agenta pomocí softwaru, který je nutný k sestavení webu Space Game .
  • Nakonfigurujete vašeho agenta pro připojení k Azure DevOps, aby mohl přijímat úlohy sestavení.
  • Ověřte, že je agent připojený k Azure DevOps a připravený přijímat úlohy sestavení.

V Azure můžete virtuální počítač vytvořit mnoha způsoby. V této lekci vytvoříte virtuální počítač s Ubuntu pomocí interaktivního terminálu s názvem Cloud Shell.

Pokud chcete nakonfigurovat virtuální počítač, máte několik možností:

  • U virtuálního počítače s Linuxem se můžete připojit přímo přes SSH a systém nakonfigurovat interaktivně.
  • Nasazení můžete automatizovat pomocí šablony ARM, Bicep nebo jiného automatizovaného nástroje pro zřizování.
  • Pokud potřebujete nasadit mnoho agentů sestavení, můžete vytvořit image virtuálního počítače s předinstalovaným veškerým softwarem.

Interaktivní konfigurace systému představuje dobrý způsob, jak začít, protože vám pomůže porozumět procesu a všemu potřebnému. Pokud chcete tento proces zjednodušit, připojte se k virtuálnímu počítači s Ubuntu přes SSH a spusťte skripty prostředí pro nastavení agenta sestavení.

Poznámka:

Pokud neznáte připojení k linuxovým systémům nebo konfiguraci, postupujte podle pokynů. Stejné principy platí pro agenty sestavení ve Windows.

Vytvoření virtuálního počítače s Linuxem

V této části vytvoříte virtuální počítač s Ubuntu 20.04, který bude sloužit jako agent sestavení. Virtuální počítač ještě není nastavený jako agent sestavení nebo nemá žádné nástroje potřebné k sestavení webové aplikace Space Game . To uděláte za chvíli.

Vyvolání Cloud Shellu prostřednictvím webu Azure Portal

Důležité

K dokončení cvičení v tomto modulu potřebujete vlastní předplatné Azure.

  1. Přejděte na web Azure Portal a přihlaste se.

  2. V nabídce vyberte Cloud Shell. Po zobrazení výzvy vyberte prostředí Bash .

    A screenshot of the Azure portal showing the location of the Cloud Shell menu item.

    Poznámka:

    Cloud Shell vyžaduje, aby prostředek úložiště Azure uchovával všechny soubory, které vytvoříte v Cloud Shellu. Při prvním otevření Cloud Shellu se zobrazí výzva k vytvoření skupiny prostředků, účtu úložiště a sdílené složky Azure Files. Toto nastavení se automaticky použije pro všechny budoucí relace Cloud Shellu.

Výběr oblasti Azure

Oblast je jedno nebo více datacenter Azure v rámci geografického umístění. Příklady oblastí jsou Východní USA, Západní USA a Severní Evropa. Každému prostředku Azure, včetně virtuálního počítače Azure, se přiřadí oblast.

Pokud chcete usnadnit spouštění příkazů, začněte výběrem výchozí oblasti. Jakmile zadáte výchozí oblast, pozdější příkazy tuto oblast použijí, pokud nezadáte jinou oblast.

  1. Spuštěním následujícího az account list-locations příkazu v Cloud Shellu zobrazte seznam oblastí dostupných z vašeho předplatného Azure:

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Name Ve sloupci ve výstupu vyberte oblast, která je blízko vás. Můžete například zvolit eastasia nebo westus2.

  3. Spuštěním az configure nastavíte výchozí oblast. Nahraďte <REGION> názvem oblasti, kterou jste vybrali:

    az configure --defaults location=<REGION>
    

    Tento příklad nastaví westus2 jako výchozí oblast:

    az configure --defaults location=westus2
    

Vytvoření skupiny zdrojů

Vytvořte skupinu prostředků, která bude obsahovat prostředky použité v tomto školicím modulu.

  • Pokud chcete vytvořit skupinu prostředků s názvem tailspin-space-game-rg, spusťte následující az group create příkaz:

    az group create --name tailspin-space-game-rg
    

Vytvoření virtuálního počítače

Pokud chcete vytvořit virtuální počítač, spusťte následující az vm create příkaz:

az vm create \
    --name MyLinuxAgent \
    --resource-group tailspin-space-game-rg \
    --image canonical:0001-com-ubuntu-server-focal:20_04-lts:latest \
    --size Standard_DS2_v2 \
    --admin-username azureuser \
    --generate-ssh-keys

Spuštění virtuálního počítače bude trvat několik minut.

Argument Standard_DS2_v2 určuje velikost virtuálního počítače. Velikost virtuálního počítače definuje rychlost jeho procesoru, velikost paměti, počáteční velikost úložiště a očekávanou šířku pásma sítě. Jedná se o stejnou velikost, kterou poskytují agenti hostovaní Microsoftem. V praxi můžete zvolit velikost, která poskytuje větší výpočetní výkon nebo další možnosti, jako je zpracování grafiky.

Argument --resource-group určuje skupinu prostředků, která obsahuje všechny věci, které potřebujeme vytvořit. Skupina prostředků vám umožní spravovat najednou všechny virtuální počítače, disky, síťová rozhraní a další prvky, ze kterých se naše řešení skládá.

Vytvoření fondu agentů

Připomínáme, že fond agentů slouží k uspořádání agentů sestavení. V této části vytvoříte fond agentů v Azure DevOps. Až budete později svého agenta konfigurovat, zadáte název fondu agentů, aby se agent registroval do správného fondu.

  1. V Azure DevOps přejděte do projektu Space Game – web – Agent .

  2. Vyberte nastavení projektu.

  3. V části Pipelines (Kanály) vyberte Agent pools (Fondy agentů).

    A screenshot of the project settings in Azure DevOps showing the location of the Agent pools menu item.

  4. Vyberte Přidat fond.

  5. V okně Přidat fond :

    1. V části Fond, který chcete propojit, vyberte Nový.
    2. V části Typ fondu vyberte Možnost Vlastní hostování.
    3. V části Název zadejte MyAgentPool.

    V praxi byste zvolili popisnější název fondu.

  6. Vyberte Vytvořit. Nový fond agentů se zobrazí v seznamu.

Vytvoření osobního přístupového tokenu (PAT)

Aby se váš agent sestavení zaregistroval v Azure DevOps, potřebujete způsob, jak se ověřit.

Uděláte to tak, že vytvoříte osobní přístupový token. Osobní přístupový token (neboli PAT) je alternativou k heslu. Pat můžete použít k ověřování pomocí služeb, jako je Azure DevOps.

Důležité

Stejně jako u hesla nezapomeňte zachovat přístupový token na bezpečném místě. V této části uložíte přístupový token jako proměnnou prostředí, aby se ve skriptu prostředí nezojevil.

  1. V Azure DevOps otevřete nastavení profilu a pak vyberte Tokeny pat.

    A screenshot of Azure DevOps showing the location of the Personal access tokens menu item.

  2. Vyberte Nový token.

  3. Zadejte pro váš token název, například Build agent (Agent sestavení).

  4. V části Obory vyberte odkaz Zobrazit všechny obory v dolní části.

  5. Vyhledejte fondy agentů a pak vyberte Číst a spravovat.

  6. Vyberte Vytvořit.

  7. Zkopírujte token na bezpečné místo.

    Za chvíli váš token použijete, abyste agentu sestavení umožnili ověření přístupu k Azure Pipelines.

Připojení k virtuálnímu počítači

V této části se připojíte k virtuálnímu počítači s Linuxem přes SSH, abyste ho mohli nakonfigurovat.

Vzpomeňte si, že se nemůžete interaktivně přihlásit k agentovi hostovaným Microsoftem. Vzhledem k tomu, že privátní agent sestavení je váš vlastní, můžete se přihlásit a nakonfigurovat ho, ale chcete ho.

Možnost připojení k agentu sestavení vám umožní nakonfigurovat ho pomocí nástrojů, které potřebujete k sestavení softwaru. Umožňuje také řešit problémy při sestavování konfigurace kanálu.

  1. Pokud chcete získat IP adresu virtuálního počítače, spusťte az vm show ji v Cloud Shellu:

    IPADDRESS=$(az vm show \
      --name MyLinuxAgent \
      --resource-group tailspin-space-game-rg \
      --show-details \
      --query [publicIps] \
      --output tsv)
    

    Tímto příkazem uložíte IP adresu do proměnné prostředí Bash s názvem IPADDRESS.

  2. Vytiskněte IP adresu virtuálního počítače do konzoly:

    echo $IPADDRESS
    
  3. Vytvořte připojení SSH k virtuálnímu počítači. Místo $IPADDRESS zadejte IP adresu, kterou jste obdrželi v předchozím kroku. Na příkazovém řádku zadejte ano a pokračujte v připojování.

    ssh azureuser@$IPADDRESS
    

    Teď jste připojení k virtuálnímu počítači přes SSH.

    Tento příkaz funguje, protože když jste dříve spustili příkaz az vm create, zadali jste možnost --generate-ssh-keys. Tato možnost vytvoří pár klíčů SSH, který vám umožní přihlásit se k virtuálnímu počítači.

Instalace nástrojů sestavení na virtuální počítač

V této části nakonfigurujete virtuální počítač pomocí nástrojů potřebných k sestavení webu Space Game .

Vzpomeňte si, že váš stávající proces sestavení používá tyto nástroje:

  • Sada .NET SDK, která se používá k sestavení aplikace
  • Node.js, který se používá k provádění úloh sestavení
  • npm, správce balíčků pro Node.js
  • gulp, balíček Node.js, který se používá k minifikaci souborů JavaScript a CSS

Jedná se o primární nástroje, které proces sestavení vyžaduje. Pokud je chcete nainstalovat, stáhnete a spustíte skript prostředí z GitHubu.

Poznámka:

Proces sestavení používá k převodu souborů Sass (.scss) na soubory CSS (.css) jiné nástroje, například sass. Node.js však tyto nástroje nainstaluje při spuštění sestavení.

Začněme aktualizací správce balíčků Ubuntu s názvem apt. Tato akce načte nejnovější informace z úložišť balíčků a je obvykle první věcí, kterou uděláte při nastavování nového systému Ubuntu.

  1. V připojení SSH aktualizujte mezipaměť správce balíčků apt:

    sudo apt-get update
    

    sudo spustí příkaz s oprávněními správce nebo kořenového adresáře.

  2. Pokud chcete stáhnout skript prostředí s názvem build-tools.sh z GitHubu, spusťte následující curl příkaz:

    curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-tools.sh > build-tools.sh
    
  3. Vytiskněte skript do terminálu, abyste mohli prozkoumat jeho obsah:

    cat build-tools.sh
    

    Zobrazí se následující výsledek:

    #!/bin/bash
    set -e
    
    # Select a default .NET version if one is not specified
    if [ -z "$DOTNET_VERSION" ]; then
      DOTNET_VERSION=6.0.300
    fi
    
    # Add the Node.js PPA so that we can install the latest version
    curl -sL https://deb.nodesource.com/setup_16.x | bash -
    
    # Install Node.js and jq
    apt-get install -y nodejs
    
    apt-get install -y jq
    
    # Install gulp
    npm install -g gulp
    
    # Change ownership of the .npm directory to the sudo (non-root) user
    chown -R $SUDO_USER ~/.npm
    
    # Install .NET as the sudo (non-root) user
    sudo -i -u $SUDO_USER bash << EOF
    curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin -c LTS -v $DOTNET_VERSION
    EOF
    

    Skript nainstaluje Node.js, npm, gulp a .NET Core.

    DOTNET_VERSION Nastavením proměnné prostředí můžete zadat verzi .NET, kterou chcete nainstalovat. Pokud tuto proměnnou nenastavíte, skript nainstaluje verzi, kterou používá vaše stávající konfigurace sestavení. Pro účely výuky tuto proměnnou nenastavíte. Skript povolíte použití výchozí verze.

  4. Vytvořte spustitelný skript a spusťte skript:

    chmod u+x build-tools.sh
    sudo ./build-tools.sh
    

    Spuštění tohoto skriptu trvá několik minut.

    V praxi byste teď mohli spouštět příkazy, které ověří, že každá softwarová komponenta byla úspěšně nainstalována.

Instalace softwaru agenta na virtuální počítač

Teď je čas nainstalovat na virtuální počítač software agenta. Tento software umožňuje virtuálnímu počítači fungovat jako agent sestavení a přijímat úlohy sestavení ze služby Azure Pipelines.

Proces registrace zkontroluje nainstalovaný software, než zaregistruje agenta ve službě Azure Pipelines. Proto je důležité nastavit agenta po instalaci veškerého dalšího softwaru. V praxi můžete agenta zaregistrovat podruhé, pokud potřebujete nainstalovat další software.

Dokumentace vysvětluje, jak ručně nastavit agenty Linuxu v místním prostředí i agenty pro macOS a Windows. Spuštěním skriptu prostředí nakonfigurujete agenta podobným způsobem, jakým jste nastavili nástroje sestavení v předchozí části.

Důležité

Skript, který tady spustíte, je určený pro účely výuky. V praxi byste měli nejprve pochopit, jak každý příkaz ve skriptech, které sestavíte, ovlivňuje celkový systém. Na konci modulu ukážeme na dokumentaci, která podrobněji popisuje vaše možnosti.

  1. Pokud chcete stáhnout skript prostředí s názvem build-agent.sh z GitHubu, spusťte následující curl příkaz:

    curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-agent.sh > build-agent.sh
    
  2. Vytiskněte skript do terminálu, abyste mohli prozkoumat jeho obsah:

    cat build-agent.sh
    

    Zobrazí se následující výsledek:

    #!/bin/bash
    set -e
    
    # Select a default agent version if one is not specified
    if [ -z "$AZP_AGENT_VERSION" ]; then
      AZP_AGENT_VERSION=2.187.2
    fi
    
    # Verify Azure Pipelines token is set
    if [ -z "$AZP_TOKEN" ]; then
      echo 1>&2 "error: missing AZP_TOKEN environment variable"
      exit 1
    fi
    
    # Verify Azure DevOps URL is set
    if [ -z "$AZP_URL" ]; then
      echo 1>&2 "error: missing AZP_URL environment variable"
      exit 1
    fi
    
    # If a working directory was specified, create that directory
    if [ -n "$AZP_WORK" ]; then
      mkdir -p "$AZP_WORK"
    fi
    
    # Create the Downloads directory under the user's home directory
    if [ -n "$HOME/Downloads" ]; then
      mkdir -p "$HOME/Downloads"
    fi
    
    # Download the agent package
    curl https://vstsagentpackage.azureedge.net/agent/$AZP_AGENT_VERSION/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz > $HOME/Downloads/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz
    
    # Create the working directory for the agent service to run jobs under
    if [ -n "$AZP_WORK" ]; then
      mkdir -p "$AZP_WORK"
    fi
    
    # Create a working directory to extract the agent package to
    mkdir -p $HOME/azp/agent
    
    # Move to the working directory
    cd $HOME/azp/agent
    
    # Extract the agent package to the working directory
    tar zxvf $HOME/Downloads/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz
    
    # Install the agent software
    ./bin/installdependencies.sh
    
    # Configure the agent as the sudo (non-root) user
    chown $SUDO_USER $HOME/azp/agent
    sudo -u $SUDO_USER ./config.sh --unattended \
      --agent "${AZP_AGENT_NAME:-$(hostname)}" \
      --url "$AZP_URL" \
      --auth PAT \
      --token "$AZP_TOKEN" \
      --pool "${AZP_POOL:-Default}" \
      --work "${AZP_WORK:-_work}" \
      --replace \
      --acceptTeeEula
    
    # Install and start the agent service
    ./svc.sh install
    ./svc.sh start
    

    Nemusíte rozumět tomu, jak jednotlivé řádky fungují, ale tady je stručný přehled toho, co tento skript dělá:

    • Stáhne balíček agenta jako soubor .tar.gz a extrahuje jeho obsah.
    • V extrahovaných souborech skript:
      • Spustí skript prostředí s názvem installdependencies.sh pro instalaci softwaru agenta.
      • Spustí skript prostředí s názvem config.sh , který nakonfiguruje agenta a zaregistruje agenta ve službě Azure Pipelines.
      • Spustí skript prostředí s názvem svc.sh pro instalaci a spuštění služby agenta.

    Skript používá proměnné prostředí, které vám umožní zadat podrobnosti o vaší organizaci Azure DevOps. Tady je souhrn:

    Proměnná Bash Popis Výchozí
    AZP_AGENT_VERSION Verze softwaru agenta, který se má nainstalovat Verze, která jsme naposledy použili k otestování tohoto modulu
    AZP_URL Adresa URL vaší organizace Azure DevOps (Žádné)
    AZP_TOKEN Váš osobní přístupový token (Žádné)
    AZP_AGENT_NAME Název vašeho agenta, jak se zobrazí v Azure DevOps Název hostitele systému
    AZP_POOL Název fondu agentů Výchozí
    AZP_WORK Pracovní adresář agenta k provádění úloh sestavení _Práce

    Pokud skript nezadá výchozí hodnotu proměnné, která není nastavená, skript vytiskne chybovou zprávu a okamžitě ukončí.

    V následujících krocích nastavte tyto proměnné prostředí:

    • AZP_AGENT_VERSION
    • AZP_URL
    • AZP_TOKEN
    • AZP_AGENT_NAME
    • AZP_POOL

    Prozatím doporučujeme ponechat ostatní proměnné bez nastavení.

  3. Nastavte proměnnou AZP_AGENT_NAME prostředí tak, aby určila název vašeho agenta. MyLinuxAgent doporučujeme.

    export AZP_AGENT_NAME=MyLinuxAgent
    
  4. Nastavte proměnnou AZP_URL prostředí tak, aby určila adresu URL vaší organizace Azure DevOps.

    Nahraďte <organizaci> vašimi. Název můžete získat na kartě prohlížeče, která zobrazuje Azure DevOps.

    export AZP_URL=https://dev.azure.com/organization
    
  5. Nastavte proměnnou AZP_TOKEN prostředí tak, aby určila váš osobní přístupový token (dlouhá hodnota tokenu, kterou jste zkopírovali dříve v této lekci).

    Nahraďte <token svým tokenem> .

    export AZP_TOKEN=token
    
  6. Nastavte proměnnou AZP_POOL prostředí tak, aby určila název fondu agentů. Dříve jste vytvořili fond s názvem MyAgentPool.

    export AZP_POOL=MyAgentPool
    
  7. Nastavte proměnnou AZP_AGENT_VERSION prostředí tak, aby určila nejnovější verzi agenta.

    export AZP_AGENT_VERSION=$(curl -s https://api.github.com/repos/microsoft/azure-pipelines-agent/releases | jq -r '.[0].tag_name' | cut -d "v" -f 2)
    

    Kanál YAML na počítači s Linuxem musí používat nejnovější verzi agenta, i když je předběžná verze. Software agenta se neustále aktualizuje, takže informace curl o verzi z úložiště GitHub. Příkaz používá jq ke čtení nejnovější verze z vráceného řetězce JSON.

  8. Vytiskněte verzi agenta do konzoly. Volitelně zkontrolujte, jestli se jedná o nejnovější verzi.

    echo $AZP_AGENT_VERSION
    
  9. Vytvořte spustitelný skript a spusťte ho:

    chmod u+x build-agent.sh
    sudo -E ./build-agent.sh
    

    sudo umožňuje, aby se skript spustil jako uživatel root. Argument -E zachová aktuální proměnné prostředí, včetně těch, které jste nastavili, aby byly pro skript k dispozici.

    Při spuštění skriptu uvidíte připojení agenta k Azure DevOps, uvidíte ho přidané do fondu agentů a uvidíte, jak se testuje připojení agenta.

Ověřte, že je agent spuštěný.

Úspěšně jste nainstalovali nástroje sestavení a software agenta na virtuální počítač. V rámci ověřovacího kroku přejděte do Azure DevOps a prohlédněte si agenta ve fondu agentů.

  1. V Azure DevOps přejděte do projektu Space Game – web – Agent .

  2. Vyberte nastavení projektu.

  3. V části Pipelines (Kanály) vyberte Agent pools (Fondy agentů).

  4. Vyberte MyAgentPool.

  5. Vyberte kartu Agenti.

    Uvidíte, že váš agent je online a připravený přijímat úlohy sestavení.

    A screenshot of Azure DevOps showing the status of the private agent. The agent shows as online, idle, and enabled.

    Tip

    Pokud se agent sestavení zobrazí jako offline, zkuste chvíli počkat a pak stránku aktualizovat.

  6. Vyberte svého agenta MyLinuxAgent.

  7. Vyberte kartu Schopnosti.

    Během instalace proces konfigurace naskenuje agenta sestavení pro funkce nástrojů. Vidíte, že npm je uvedený jako jeden z nich. Vzpomeňte si, že jste zadali původní konfiguraci sestavení, která npm musí být nainstalovaná v agentu.

    A screenshot of Azure DevOps showing a few of the agent's capabilities. The npm capability is highlighted.

    Když určíte, který fond agentů se má použít, můžete do oddílu demands zahrnout kteroukoli z těchto položek. Zahrnutím zajistíte, že Azure Pipelines zvolí agenta sestavení, který má software, který potřebujete k sestavení aplikace. Umožňuje také vytvářet fondy agentů s různými konfiguracemi softwaru. Azure Pipelines vybere správnou konfiguraci na základě vašich požadavků.