Gyakorlat – Azure-on futó buildügynök létrehozása

Befejeződött

Ebben a leckében a Microsoft Azure Pipelinesban használható buildügynök konfigurálásához egy Microsoft Azure-on futó virtuális gépet fog használni. Biztosítunk egy virtuális gépet, amelyet a modul időtartama alatt használhat.

Ebben a leckében a következőket teheti meg:

  • Fordítóügynökként szolgáló Ubuntu rendszerű virtuális gép létrehozása az Azure-ban.
  • Ügynökkészlet létrehozása a Microsoft Azure DevOpsban.
  • Hozzáférési jogkivonat létrehozása az ügynök Azure DevOps-beli hitelesítéséhez.
  • Konfigurálja az ügynököt a Space Game webhely létrehozásához szükséges szoftverrel.
  • Az ügynök konfigurálása az Azure DevOps-hoz való csatlakozásra, hogy fogadni tudja a fordítási feladatokat.
  • Ellenőrizze, hogy az ügynök csatlakozik-e az Azure DevOpshoz, és készen áll-e a buildelési feladatok fogadására.

Az Azure-ban több módon is létrehozhatók virtuális gépek. Ebben a leckében egy Ubuntu virtuális gépet fog létrehozni egy Cloud Shell nevű interaktív terminál használatával.

A virtuális gép konfigurálásához több lehetősége is van:

  • Linuxos virtuális gép esetében csatlakozhat közvetlenül SSH-val, és konfigurálhatja interaktív módon a rendszert.
  • Az üzembe helyezést ARM-sablon, Bicep vagy más automatizált kiépítési eszköz használatával automatizálhatja.
  • Ha sok fordítóügynököt kell üzembe helyeznie, létrehozhat egy virtuálisgép-lemezképet, amelyben az összes szoftver előre telepítve van.

Kiindulásként érdemes interaktívan konfigurálni egy rendszert, mert így jobban megértheti a folyamatot, és hogy mi szükséges hozzá. A folyamat egyszerűsítése érdekében csatlakozzon az Ubuntu virtuális géphez SSH-val, és futtasson rendszerhéjszkripteket a buildügynök beállításához.

Megjegyzés:

Ha nem ismeri a Linux-rendszerekhez való csatlakozást vagy konfigurálást, kövesse az alábbi lépéseket. Ugyanezek az alapelvek windowsos fordítóügynököknél is használhatók.

Linux rendszerű virtuális gép létrehozása

Ebben a szakaszban egy Ubuntu 20.04-et futtató virtuális gépet hoz létre, amely a buildügynöke lesz. A virtuális gép még nincs beállítva buildügynökként, vagy rendelkezik a Space Game webalkalmazás létrehozásához szükséges eszközökkel. Rövidesen ezeket is beállíthatja.

A Cloud Shell használata az Azure Portalon

Fontos

A modul gyakorlatainak elvégzéséhez saját Azure-előfizetésre van szüksége.

  1. Nyissa meg az Azure Portalt, és jelentkezzen be.

  2. A menüben válassza a Cloud Shellt. Amikor a rendszer kéri, válassza ki a Bash-felületet .

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

    Megjegyzés:

    A Cloud Shellhez egy Azure Storage-erőforrás szükséges a Cloud Shellben létrehozott fájlok megőrzéséhez. A Cloud Shell első megnyitásakor a rendszer kérni fogja, hogy hozzon létre egy erőforráscsoportot, tárfiókot és Azure Files-megosztást. Ezt a beállítást a rendszer automatikusan használja az összes jövőbeli Cloud Shell-munkamenethez.

Azure-régió kiválasztása

A régió egy vagy több Azure-adatközpont egy földrajzi helyen belül. Ilyen régió például az USA keleti régiója, az USA nyugati régiója vagy Észak-Európa. Minden Azure-erőforrás, beleértve egy Azure-beli virtuális gépet is, régióhoz van rendelve.

A parancsok egyszerűbb futtatásához először válasszon ki egy alapértelmezett régiót. Az alapértelmezett régió megadása után a későbbi parancsok ezt a régiót használják, hacsak nem ad meg másik régiót.

  1. A Cloud Shellben az Azure-előfizetésből elérhető régiók listázásához futtassa a következő az account list-locations parancsot:

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Name A kimenet oszlopában válasszon ki egy Önhöz közeli régiót. Például válassza ki eastasia vagy westus2.

  3. Futtassa az configure az alapértelmezett régió beállításához. Cserélje le <REGION> a kijelölt régió nevére:

    az configure --defaults location=<REGION>
    

    Ez a példa alapértelmezett régióként van beállítva westus2 :

    az configure --defaults location=westus2
    

Erőforráscsoport létrehozása

Hozzon létre egy erőforráscsoportot, amely tartalmazza a képzési modulban használt erőforrásokat.

  • A tailspin-space-game-rg nevű erőforráscsoport létrehozásához futtassa a következő az group create parancsot:

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

Create the VM

A virtuális gép létrehozásához futtassa a következő az vm create parancsot:

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

A virtuális gép üzembe helyezése eltarthat néhány percig.

A Standard_DS2_v2 érték a gép méretét adja meg. Egy virtuális gép mérete meghatározza a processzora sebességét, a memória méretét, kezdeti tárhelyét és a várt hálózati sávszélességet. Ez a méret megegyezik a Microsoft által üzemeltetett ügynökök által biztosított méretekkel. A gyakorlatban olyan méretet választhat, amely nagyobb számítási teljesítményt vagy további képességeket, például grafikus feldolgozást biztosít.

A --resource-group argumentum adja meg az erőforráscsoportot, amelyben minden tárolva lesz, amit létre kell hoznunk. Egy megoldáscsoport lehetővé teszi az összes virtuális gép, lemez, hálózati adapter és más elem felügyeletét, amelyekből a megoldási egységünk áll.

Az ügynökkészlet létrehozása

Mint tudja, az ügynökkészletek fordítóügynökök rendszerezésére valók. Ebben a szakaszban az ügynökkészletet fogja létrehozni az Azure DevOpsban. Az ügynökkészlet nevét később, az ügynök konfigurálásakor meg kell adnia, hogy az a megfelelő készletben regisztrálja magát.

  1. Az Azure DevOpsban lépjen a Space Game – web – Ügynök projektre.

  2. Válassza a Projektbeállítások lehetőséget.

  3. A Folyamatok alatt válassza az Ügynökkészletek lehetőséget.

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

  4. Válassza a Készlet hozzáadása lehetőséget.

  5. A Készlet hozzáadása ablakban:

    1. A csatolni kívánt készlet alatt válassza az Új lehetőséget.
    2. A Készlet típusa csoportban válassza a Saját üzemeltetésű lehetőséget.
    3. A Név mezőbe írja be a MyAgentPool nevet.

    A gyakorlatban egy leíróbb nevet kell választania a készletnek.

  6. Select Create. Az új ügynökkészlet megjelenik a listában.

Személyes hozzáférési jogkivonat létrehozása

Ahhoz, hogy a buildügynök regisztrálja magát az Azure DevOpsban, szüksége van egy módszerre, amellyel hitelesítheti magát.

Ehhez létrehozhat egy személyes hozzáférési jogkivonatot. A személyes hozzáférési jogkivonatok (vagy PAT) a jelszó alternatívája. A PAT használatával hitelesítést végezhet olyan szolgáltatásokkal, mint az Azure DevOps.

Fontos

A jelszóhoz hasonlóan a hozzáférési jogkivonatot is biztonságos helyen kell tartania. Ebben a szakaszban környezeti változóként fogja tárolni a hozzáférési jogkivonatot, hogy az ne jelenjen meg a rendszerhéjszkriptben.

  1. Az Azure DevOpsban nyissa meg a profilbeállításokat, majd válassza a Személyes hozzáférési jogkivonatok lehetőséget.

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

  2. Válassza az Új jogkivonat lehetőséget.

  3. Adjon nevet (például Forditougynok) a jogkivonatnak.

  4. A Hatókörök csoportban válassza az összes hatókör megjelenítése hivatkozást az alján.

  5. Keresse meg az ügynökkészleteket, majd válassza az Olvasás és kezelés lehetőséget.

  6. Select Create.

  7. Másolja biztonságos helyre a jogkivonatot.

    A jogkivonatot rövidesen felhasználhatja arra, hogy a fordítóügynök hitelesíteni tudja magát az Azure Pipelines eléréséhez.

Csatlakozás a virtuális géphez

Ebben a szakaszban SSH-kapcsolaton keresztül fog csatlakozni a Linux rendszerű virtuális géphez, hogy konfigurálhassa.

Ne feledje, hogy nem tud interaktívan bejelentkezni egy Microsoft által üzemeltetett ügynökbe. Mivel egy privát buildügynök a sajátja, tetszés szerint bejelentkezhet és konfigurálhatja azt.

A buildügynökhöz való csatlakozás lehetővé teszi, hogy a szoftver létrehozásához szükséges eszközökkel konfigurálja azt. Emellett a folyamatkonfiguráció összeállítása során elháríthatja a problémákat.

  1. A virtuális gép IP-címének lekéréséhez futtassa az vm show a Cloud Shellben:

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

    Ez a parancs egy IPADDRESS nevű Bash-változóba menti az IP-címet.

  2. A virtuális gép IP-címének nyomtatása a konzolra:

    echo $IPADDRESS
    
  3. Hozzon létre egy SSH-kapcsolatot a virtuális géppel. A $IPADDRESS helyett adja meg az előző lépésben kapott IP-címet. A csatlakozás folytatásához írja be az igent a parancssorba.

    ssh azureuser@$IPADDRESS
    

    Most már SSH-kapcsolaton keresztül csatlakozik a virtuális géphez.

    Ez a parancs azért működik, mert az az vm create korábbi futtatásakor megadta a --generate-ssh-keys kapcsolót. Ez a beállítás létrehoz egy SSH-kulcspárt, amely lehetővé teszi a virtuális gépre való bejelentkezést.

Fordítási eszközök telepítése a virtuális gépre

Ebben a szakaszban konfigurálja a virtuális gépet a Space Game webhely létrehozásához szükséges eszközökkel.

Emlékezhet rá, hogy a meglévő buildelési folyamat az alábbi eszközöket használja:

  • Az alkalmazás létrehozásához használt .NET SDK
  • Node.js a fordítási feladatok végrehajtásához
  • npm, a Node.js csomagkezelője
  • gulp, egy Node.js-csomag, amely JavaScript- és CSS-fájlok minifikálásához használatos

Ezek az elsődleges eszközök, amelyekre a buildelési folyamatnak szüksége van. A telepítésükhöz le kell töltenie és futtatnia kell egy rendszerhéjszkriptet a GitHubról.

Megjegyzés:

A buildelési folyamat más eszközöket, például node-sasokat használ a Sass (.scss) fájlok CSS-fájlokká (.css) való konvertálásához. Ezeket az eszközöket azonban a Node.js telepíti a buildelés futásakor.

Kezdjük az apt nevű Ubuntu csomagkezelő frissítésével. Ez a művelet lekéri a legújabb információkat a csomagtárakból, és általában az első dolog, amit egy új Ubuntu-rendszer beállításakor kell elvégeznie.

  1. Az SSH-kapcsolatban frissítse az apt csomagkezelő gyorsítótárát:

    sudo apt-get update
    

    sudo rendszergazdai vagy gyökérjogokkal futtatja a parancsot.

  2. Ha le szeretne tölteni egy build-tools.sh nevű rendszerhéjszkriptet a GitHubról, futtassa a következő curl parancsot:

    curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-tools.sh > build-tools.sh
    
  3. Nyomtassa ki a szkriptet a terminálra, hogy megvizsgálhassa annak tartalmát:

    cat build-tools.sh
    

    A következő eredmény jelenik meg:

    #!/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
    

    A szkript telepíti a Node.js, az npm, a gulp és a .NET Core rendszert.

    A környezeti változó beállításával DOTNET_VERSION megadhatja a telepíteni kívánt .NET-verziót. Ha nem állítja be ezt a változót, a szkript telepíti a meglévő buildkonfiguráció által használt verziót. Tanulási célokra nem állítja be ezt a változót. Engedélyezi, hogy a szkript az alapértelmezett verziót használja.

  4. Hajtsa végre a szkriptet, majd futtassa a szkriptet:

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

    A szkript futása néhány percet vesz igénybe.

    A gyakorlatban most különböző parancsok futtatásával ellenőriznie kellene az egyes szoftverösszetevők megfelelő telepítését.

Ügynökszoftver telepítése a virtuális gépre

Most már telepítheti az ügynökszoftvert a virtuális gépre. Ez a szoftver teszi lehetővé, hogy a virtuális gép fordítóügynökként működjön, és fordítási feladatokat fogadjon az Azure Pipelinesból.

A regisztrációs folyamat ellenőrzi a telepített szoftvert, mielőtt regisztrálja az ügynököt az Azure Pipelinesban. Ezért fontos az ügynök beállítása az összes többi szoftver telepítése után. A gyakorlatban másodszor is regisztrálhatja az ügynököt, ha további szoftvereket kell telepítenie.

A dokumentáció bemutatja, hogyan állíthat be manuálisan saját üzemeltetésű Linux-ügynököket , valamint macOS- és Windows-ügynököket. A rendszerhéjszkript futtatásával az ügynököt ugyanúgy konfigurálhatja, mint az előző szakaszban beállított buildeszközöket.

Fontos

Az itt futtatott szkript tanulási célokra készült. A gyakorlatban először meg kell értenie, hogy a buildelt szkriptek egyes parancsai hogyan befolyásolják a teljes rendszert. A modul végén a lehetőségeket részletesebben leíró dokumentációra mutatunk.

  1. Ha le szeretne tölteni egy build-agent.sh nevű rendszerhéjszkriptet a GitHubról, futtassa a következő curl parancsot:

    curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-agent.sh > build-agent.sh
    
  2. Nyomtassa ki a szkriptet a terminálra, hogy megvizsgálhassa annak tartalmát:

    cat build-agent.sh
    

    A következő eredmény jelenik meg:

    #!/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
    

    Nem kell megértenie az egyes sorok működését, de íme egy rövid összefoglalás a szkript működéséről:

    • Letölti az ügynökcsomagot .tar.gz fájlként, és kinyeri annak tartalmát.
    • A kinyert fájlokban a szkript:
      • Futtat egy installdependencies.sh nevű rendszerhéjszkriptet az ügynökszoftver telepítéséhez.
      • Futtat egy config.sh nevű rendszerhéjszkriptet az ügynök konfigurálásához és az ügynök Azure Pipelinesban való regisztrálásához.
      • Futtat egy svc.sh nevű rendszerhéjszkriptet az ügynökszolgáltatás telepítéséhez és elindításához.

    A szkript környezeti változókkal teszi lehetővé az Azure DevOps-szervezettel kapcsolatos adatok megadását. Íme egy összegzés:

    Bash-változó Leírás Alapértelmezett
    AZP_AGENT_VERSION A telepítendő ügyfélszoftver verziója A modul teszteléséhez utoljára használt verzió
    AZP_URL Az Azure DevOps-szervezet URL-címe (Nincs)
    AZP_TOKEN A személyes hozzáférési jogkivonat (Nincs)
    AZP_AGENT_NAME Az ügynök neve, ahogyan az Azure DevOps-ban megjelenik A rendszer állomásneve
    AZP_POOL Az ügynökkészlet neve Alapértelmezett
    AZP_WORK A munkakönyvtár, amelyben az ügynök a fordítási feladatokat végezheti _work

    Ha a szkript nem ad alapértelmezett értéket egy nem beállított változóhoz, a szkript egy hibaüzenetet nyomtat ki, és azonnal kilép.

    Az alábbi lépésekben állítsa be az alábbi környezeti változókat:

    • AZP_AGENT_VERSION
    • AZP_URL
    • AZP_TOKEN
    • AZP_AGENT_NAME
    • AZP_POOL

    Javasoljuk, hogy a többi változót egyelőre hagyja beállítatlanul.

  3. Az ügynök nevének megadásához állítsa be az AZP_AGENT_NAME környezeti változót. A MyLinuxAgent nevet javasoljuk.

    export AZP_AGENT_NAME=MyLinuxAgent
    
  4. Állítsa be a AZP_URL környezeti változót az Azure DevOps-szervezet URL-címének megadásához.

    Az <organization> szó helyére írja be saját vállalata nevét. A nevet az Azure DevOpst megjelenítő böngészőlapról szerezheti be.

    export AZP_URL=https://dev.azure.com/organization
    
  5. Állítsa be a AZP_TOKEN környezeti változót a személyes hozzáférési jogkivonat (az egység korábbi részében másolt hosszú tokenérték) megadására.

    A <token> szó helyére illessze be a jogkivonatot.

    export AZP_TOKEN=token
    
  6. Az ügynökkészlet nevének megadásához állítsa be az AZP_POOL környezeti változót. Korábban már létrehozott egy MyAgentPool nevű készletet.

    export AZP_POOL=MyAgentPool
    
  7. Állítsa be a környezeti változót AZP_AGENT_VERSION az ügynök legújabb verziójának megadásához.

    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)
    

    Egy Linux-gépen futó YAML-folyamatnak az ügynök legújabb verzióját kell használnia, még akkor is, ha az előzetes kiadásra kerül. Az ügynökszoftver folyamatosan frissül, így curl ön a GitHub-adattár verzióinformációi. A parancs a visszaadott JSON-sztring legújabb verzióját olvassa jq be.

  8. Az ügynök verziójának nyomtatása a konzolra. Ha szeretné, ellenőrizze, hogy ez-e a legújabb verzió.

    echo $AZP_AGENT_VERSION
    
  9. Hajtsa végre a szkriptet, majd futtassa:

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

    A sudo használatával root-jogú felhasználóként futtathatja a szkriptet. Az -E argumentum megőrzi az aktuális környezeti változókat, beleértve a beállított változókat is, hogy azok elérhetők legyenek a szkript számára.

    A szkript futtatásakor láthatja, hogy az ügynök csatlakozik az Azure DevOpshoz, láthatja, hogy hozzáadta az ügynökkészlethez, és megtekintheti az ügynökkapcsolat tesztelését.

Ellenőrizze, hogy az ügynök fut-e

Sikeresen telepítette a buildelési eszközöket és az ügynökszoftvert a virtuális gépen. Ellenőrzési lépésként lépjen az Azure DevOpsba, és tekintse meg az ügynökét az ügynökkészletben.

  1. Az Azure DevOpsban lépjen a Space Game – web – Ügynök projektre.

  2. Válassza a Projektbeállítások lehetőséget.

  3. A Folyamatok alatt válassza az Ügynökkészletek lehetőséget.

  4. Válassza a MyAgentPool elemet.

  5. Válassza az Ügynökök lapot.

    Láthatja, hogy az ügynöke online állapotban van, és készen áll a buildelési feladatok elfogadására.

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

    Tipp.

    Ha a buildügynök offline állapotúként jelenik meg, várjon néhány pillanatot, majd frissítse a lapot.

  6. Jelölje ki a MyLinuxAgent ügynököt.

  7. Válassza a Képességek lapot.

    A beállítás során a konfigurációs folyamat megvizsgálta a fordítóügynök által használható eszközöket. Láthatja, hogy ezek között az npm is szerepel. Bizonyára emlékszik rá, hogy az eredeti fordítási konfiguráció előírta az npm telepítését az ügynökre.

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

    Amikor megadja a használandó ügynökkészletet, ezeknek a bejegyzéseknek bármelyikét belefoglalhatja a demands szakaszba. Ezek is biztosítják, hogy az Azure Pipelines olyan buildügynököt válasszon, amely rendelkezik az alkalmazás létrehozásához szükséges szoftverrel. Emellett különböző szoftverkonfigurációkkal rendelkező ügynökkészleteket is létrehozhat. Az Azure Pipelines a követelményeknek megfelelően a megfelelő konfigurációt választja ki.