Gyakorlat – Azure-on futó buildügynök létrehozása
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.
Nyissa meg az Azure Portalt, és jelentkezzen be.
A menüben válassza a Cloud Shellt. Amikor a rendszer kéri, válassza ki a Bash-felületet .
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.
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
Name
A kimenet oszlopában válasszon ki egy Önhöz közeli régiót. Például válassza kieastasia
vagywestus2
.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.
Az Azure DevOpsban lépjen a Space Game – web – Ügynök projektre.
Válassza a Projektbeállítások lehetőséget.
A Folyamatok alatt válassza az Ügynökkészletek lehetőséget.
Válassza a Készlet hozzáadása lehetőséget.
A Készlet hozzáadása ablakban:
- A csatolni kívánt készlet alatt válassza az Új lehetőséget.
- A Készlet típusa csoportban válassza a Saját üzemeltetésű lehetőséget.
- A Név mezőbe írja be a MyAgentPool nevet.
A gyakorlatban egy leíróbb nevet kell választania a készletnek.
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.
Az Azure DevOpsban nyissa meg a profilbeállításokat, majd válassza a Személyes hozzáférési jogkivonatok lehetőséget.
Válassza az Új jogkivonat lehetőséget.
Adjon nevet (például Forditougynok) a jogkivonatnak.
A Hatókörök csoportban válassza az összes hatókör megjelenítése hivatkozást az alján.
Keresse meg az ügynökkészleteket, majd válassza az Olvasás és kezelés lehetőséget.
Select Create.
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.
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.A virtuális gép IP-címének nyomtatása a konzolra:
echo $IPADDRESS
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.
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.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
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.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.
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
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.
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
Á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
Á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
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
Á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 olvassajq
be.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
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.
Az Azure DevOpsban lépjen a Space Game – web – Ügynök projektre.
Válassza a Projektbeállítások lehetőséget.
A Folyamatok alatt válassza az Ügynökkészletek lehetőséget.
Válassza a MyAgentPool elemet.
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.
Tipp.
Ha a buildügynök offline állapotúként jelenik meg, várjon néhány pillanatot, majd frissítse a lapot.
Jelölje ki a MyLinuxAgent ügynököt.
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 aznpm
telepítését az ügynökre.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.