Fürtsablonok
Az Azure CycleCloud sablonokkal definiálja a fürtkonfigurációkat. A CycleCloud alapértelmezés szerint számos sablont tartalmaz, és a támogatott sablonok teljes listája elérhető a GitHubon. Létrehozhat új sablonokat, vagy testre szabhatja a meglévőket. Előfordulhat például, hogy testre szeretne szabni egy meglévő sablont, hogy kihasználhassa a kihasználatlan virtuális gépeket, vagy hozzáadhat egy VPC-t a saját hálózatának bővítéséhez.
Konfiguráció jelölése
Az Azure CycleCloud-fürtsablonok mindegyike rendelkezik egy vagy több [[[konfiguráció]] szakaszsal, amelyek egy csomóponthoz vagy csomóponthoz tartoznak. Ezek a szakaszok a CycleCloud által indított csomópontok szoftverkonfigurációs beállításait adják meg. A pontozott jelölés a konfigurálni kívánt attribútumok megadására szolgál:
[[node scheduler]]
[[[configuration]]]
cycle_server.admin.name = poweruser
cycle_server.admin.pass = super_secret
cycle_server.http_port = 8080
cycle_server.https_port = 8443
A gépelés mentéséhez megadhat egy konfigurációs szakaszt is a jelöléssel prefix
.
Ugyanez a konfiguráció a következőképpen is írható:
[[node scheduler]]
[[[configuration cycle_server]]]
admin.name = poweruser
admin.pass = super_secret
http_port = 8080
https_port = 8443
Egy csomópont/csomópontarray szükség esetén több konfigurációs szakaszt is tartalmazhat:
[[node scheduler]]
[[[configuration]]]
run_list = role[sge_scheduler_node]
[[[configuration cycle_server.admin]]]
name = poweruser
pass = super_secret
Fürtsablon paraméterei
A fürtsablonok olyan paramétereket tartalmazhatnak, amelyek módosítják a fürt egyes részeinek értékeit anélkül, hogy magát a sablont kellene módosítaniuk. Ez különösen akkor hasznos, ha sok kisebb különbséggel rendelkező hasonló fürtre van szükség, például fejlesztési és éles környezetek üzembe helyezésére. A fürtsablonon belüli paraméter megadásának szintaxisa egy "$" előtaggal rendelkező változó előtagja. Egy alapszintű (nem funkcionális) sablon, amely néhány paraméterrel rendelkezik, a következőképpen nézhet ki:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
Ez a sablon két paramétert határoz meg: $machine_type
és $slots
. Ezzel a sablonnal definiálhat olyan szövegfájlokat, amelyek a paraméterek értékeit tartalmazzák a fejlesztői és a prod környezetekben. A paraméterfájl lehet JSON- vagy Java-tulajdonságok fájlformátuma:
# dev-params.json
{
"machine_type": "H16r",
"slots": 2
}
# prod-params.properties
machine_type = Standard_D4v3
slots = 8
Ez létrehoz egy JSON-fájlt, amely tartalmazza a dev paramétereit, és egy .properties fájlt, amely az éles környezet értékeit tartalmazza.
Megjegyzés
A paraméterfájl fájlnév-utótagja fontos! JSON használata esetén a fájlt el kell nevezni foo.json
. Java-tulajdonságok használata esetén a fájlnak a következővel kell végződnie .properties
: . A helytelenül elnevezett paraméterfájlok nem importálhatók megfelelően.
Most már importálhatja a sablont a paraméterfájl használatával a hiányzó részek kitöltéséhez:
cyclecloud import_cluster gridengine-dev -f template.txt -p dev-params.json -c gridengine
cyclecloud import_cluster gridengine-prod -f template.txt -p prod-params.properties -c gridengine
A fürtsablonban lévő paraméterek egy részét vagy egészét is meg lehet határozni:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
[parameters]
[[parameter machine_type]]
DefaultValue = Standard_D4v3
[[parameter slots]]
DefaultValue = 2
Az egyes paraméterek alapértelmezett értékei a sablonban vannak definiálva (a "dev" értékeket használtuk alapértelmezett értékként).
Mostantól paraméterfájl nélkül is importálható a sablon, és a rendszer automatikusan felhasználja a "dev" értékeket. Amikor létre kell hoznia egy "prod" fürtöt, a prod-params.properties fájllal felülírhatja a sablonfájlban megadott értékeket.
Megjegyzés
A paraméternevek tartalmazhatnak betűket, számokat és aláhúzásjeleket.
A sablonban szereplő paraméterhivatkozások két űrlap egyikét használhatják:
$param
: Egyetlen, elnevezett paraméter értékét használja param
${expr}
: Az összes paraméter kontextusában kiértékeli expr
, így dinamikus értékeket is kiszámíthat. Például:
Attribute = ${(a > b ? a : b) * 100}
Ez két paraméter közül a nagyobbat veszi fel, a
és b
megszorozza 100-mal.
A kifejezés értelmezése és kiértékelése a ClassAd nyelvi specifikációja alapján történik.
Ha egy paraméterhivatkozás önmagában létezik, a paraméter értéke lesz használva, amely támogatja a nem sztringtípusokat, például a logikai értékeket, az egész számokat és a beágyazott struktúrákat, például a listákat.
Ha azonban a hivatkozás más szövegbe van ágyazva, annak értéke konvertálódik, és egy sztringben szerepel.
Tegyük fel például, hogy param
két helyen van definiálva 456
és hivatkozva:
- Attribute1 = $param
- Attribútum2 = 123$param
Az érték Attribute1
a szám 456
, de az érték Attribute2
a sztring "123456"
. Vegye figyelembe, hogy ${param}
ugyanaz $param
, mint a paraméterhivatkozások beágyazása összetettebb helyzetekben:
- Attribútum3 = 123$param789
- Attribútum4 = 123${param}789
Attribute3
a megkeresi a névvel ellátott param789
paramétert, de az Attribútum4 a lekérés "123456789"
értékét param
használja.
Géptípusok
Az Azure CycleCloud az attribútumon keresztül több géptípust MachineType
is támogat. Megkísérli a kapacitás beszerzését a felsorolt sorrendben.
Fürt init specifikációi
Az Azure CycleCloud webalkalmazás lehetővé teszi, hogy a felhasználók egy új fürt létrehozásakor kiválasztják a cluster-init projekt specifikációit. A projekt specifikációi a fürtsablonon belül vannak beállítva:
[parameter ClusterInitSpecs]
Label = Cluster-Init
Description = Cluster init specs to apply to nodes
ParameterType = Cloud.ClusterInitSpecs
[cluster demo]
[[node defaults]]
AdditionalClusterInitSpecs = $ClusterInitSpecs
[[[cluster-init myproject:myspec:1.0.0]]]
Miután hozzáadta ezt a paramétert a fürtsablonhoz, a felhasználó a fájlválasztóval kiválaszthatja a megfelelő projektspecifikációkat egy új fürt létrehozásakor.
Kihasználatlan Virtual Machines
A számítási feladatok költségeinek csökkentése érdekében beállíthatja Interruptible = true
. Ez a példányt kihasználatlanként jelöli meg, és ha rendelkezésre áll, többletkapacitást fog használni. Fontos megjegyezni, hogy ezek a példányok nem mindig érhetők el, és bármikor elővehetők, ami azt jelenti, hogy nem mindig megfelelőek a számítási feladatokhoz.
Alapértelmezés szerint az igaz értékre állításkor Interruptible
a kihasználatlan példányok maximális ára -1, ami azt jelenti, hogy a példány nem lesz kizárva az ár alapján. A példány ára a Spot aktuális ára, vagy egy standard példány ára lesz, attól függően, hogy melyik alacsonyabb, feltéve, hogy rendelkezésre áll kapacitás és kvóta. Ha egyéni maximális árat szeretne beállítani, használja a MaxPrice
kívánt csomópont vagy nodearray attribútumot.
[cluster demo]
[[nodearray execute]]
Interruptible = true
MaxPrice = 0.2
Keresési táblák
Az egyik paraméter hivatkozhat egy másikra, és kiszámíthat egy bizonyos értéket egy keresési táblával. Tegyük fel például, hogy a rendszerképhez egy paramétert kell használnia, ebben az esetben két lehetőség közül választhat:
[[parameter MachineImage]]
Label = Image
DefaultValue = image-1000
Description = Ubuntu 22.04
Config.Plugin = pico.control.AutoCompleteDropdown
[[[list Config.Entries]]]
Name = image-1000
Label = Ubuntu 20.04
[[[list Config.Entries]]]
Name = image-2000
Label = Ubuntu 22.04
A kiválasztott rendszerkép operációsrendszer-verzióját is lekérheti, és más konfigurációhoz használhatja egy olyan paraméter megadásával, amelynek értéke értéktáblázat:
[[parameter AmiLookup]]
ParameterType = hidden
[[[record DefaultValue]]]
image-1000 = Ubuntu 20.04
image-2000 = Ubuntu 22.04
Vegye figyelembe, hogy ez rejtett, így nem jelenik meg a felhasználói felületen.
A kiválasztott rendszerképhez használt operációsrendszer-verziót bárhol máshol lekérheti a fürtdefinícióban:
[[node node]]
[[[configuration]]]
version = ${AmiLookup[MachineImage]}
Grafikus felhasználói felület integrációja
A fürtsablon paramétereinek definiálásával kihasználhatja az Azure CycleCloud grafikus felhasználói felületének előnyeit. Paraméterek definiálásakor például a következő attribútumok használhatók a grafikus felhasználói felület létrehozásához:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
[parameters]
[[parameter machine_type]]
DefaultValue = Standard_D4v3
Label = Machine Type
Description = MachineType to use for the Grid Engine scheduler node
ParameterType = Cloud.MachineType
[[parameter slots]]
DefaultValue = 2
Description = The number of slots for Grid Engine to report for the node
A rendszer a "Label" és a "Description" attribútumot is tartalmazza, amelyek megjelennek a grafikus felhasználói felületen, valamint a választható "ParameterType" attribútumot. A "ParameterType" lehetővé teszi egyéni felhasználói felületi elemek megjelenítését. A fenti példában a "Cloud.MachineType" érték egy legördülő menüt jelenít meg, amely az összes elérhető géptípust tartalmazza. A többi ParameterType érték a következő:
Paraméter típusa | Description |
---|---|
Cloud.MachineType | Megjeleníti az összes elérhető géptípust tartalmazó legördülő menüt. |
Cloud.Credentials | Megjeleníti az összes rendelkezésre álló hitelesítő adatot tartalmazó legördülő menüt. |
Cloud.Region | Az összes elérhető régiót tartalmazó legördülő lista megjelenítése. |
Chef-kiszolgáló támogatása
Azure CycleCloud suports ChefServer.
Hozza létre a fájlt chefserver.json
, és adja hozzá a hitelesítő adatait.
ValidationKey
A a chef-kiszolgáló validation.pem fájljának felel meg. Azt is igazolnia validation_client_name
kell, hogy módosította-e a chef-validator alapértelmezett értékéről:
{
"AdType" : "Cloud.Locker",
"ValidationKey" : "YOURVALIDATION.PEMHERE",
"ValidationClientName" : "chef-validator",
"Credentials" : "default",
"Location" : "https://mychefserver",
"ChefRepoType" : "chefserver",
"LockerType" : "chefrepo",
"Name" : "chefrepo",
"AccountId" : "default",
"Shared" : false
}
Ezután helyezze a fájlt a könyvtárba /opt/cycle_server/config/data
. A rendszer automatikusan importálja.
Egyéni felhasználói rendszerképek sablonokban
Az Azure CycleCloud támogatja az egyéni rendszerképeket a sablonokban. Adja meg közvetlenül a rendszerkép azonosítóját (erőforrás-azonosítóját), ImageId
vagy adja hozzá a lemezképet a lemezkép beállításjegyzékéhez. Ha a rendszerkép a beállításjegyzékben van, hivatkozzon rá a Image
csomóponton vagy ImageName
a csomóponton. Ez megjelenik a rendszerkép legördülő listájában a fürtlétrehozási oldalon.
A lemezkép-beállításjegyzékben lévő képek egy Package
olyan rekordból állnak, amely azonosítja a logikai lemezkép tartalmát, és egy vagy több megfelelő Artifact
rekordból áll, amelyek a megfelelő felhőszolgáltató tényleges képazonosítóját adják meg. Például egy olyan egyéni rendszerkép, amelyen az R telepítve van, a csomagrekordból állhat:
AdType = "Package"
Name = "r_execute"
Version = "2.1.1"
PackageType = "image"
Label = "R"
Miután hozzáadta ezt a rekordot, megadhatja a rendszerképet a fürtsablon vagy ImageName = r_execute
a fürtsablon hozzáadásávalImage = R
.
Ha ez a rendszerkép egyetlen virtuális gépként lett volna használatban egy azonosítóval /subscriptions/xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/images/MyCustomImage
, akkor a következő összetevőt kell tárolnia:
AdType = "Artifact"
Package = "r_execute"
Version = "2.1.1"
Name = "az/useast"
Provider = "az"
ImageId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/images/MyCustomImage"
Meg kell adnia Provider
az összetevőt.
Egy adott képcsomaghoz annyi összetevőt adhat hozzá, amennyit csak szeretne, de a rendszerkép használatához szükséges összes összetevőt bele kell foglalnia az összes kívánt "helyre" (felhőszolgáltatói fiókonként, régiókra, projektekre stb.). Az összetevő neve nem fontos, azzal a kivételével, hogy az adott csomag és verzió összes összetevőjéhez egyedinek kell lennie. A szolgáltató és a szolgáltatóspecifikus részletek (pl. régió) kombinációjának használata általában ajánlott. A CycleCloud automatikusan kiválasztja a megfelelő összetevőt, hogy megfeleljen a szolgáltatónak és a szolgáltatóspecifikus részleteknek, de a Név elemzése helyett a Provider attribútumot (és régiót stb.) használja.
Ha egynél több azonos nevű képcsomagot ad hozzá, azoknak eltérő verziószámokkal kell rendelkezniük. Egy példány indításakor a CycleCloud automatikusan kiválasztja a legmagasabb verziószámot tartalmazó képet, pontozott sztringként kezeli a verziószámot, és számként összehasonlítja az egyes részeket. A felülbíráláshoz adja meg ImageVersion
a csomóponton literálként (pl. 1.2
) vagy helyettesítő karakterként (1.x
).