Megosztás a következőn keresztül:


Projektek

A projekt olyan erőforrások gyűjteménye, amelyek csomópontkonfigurációkat határoznak meg. A projektek specifikációkat tartalmaznak. Amikor egy csomópont elindul, egy specifikációsorozat feldolgozásával és futtatásával van konfigurálva.

Az Azure CycleCloud projektek használatával kezeli a fürtözött alkalmazásokat, például a kötegelt ütemezőket. A CycleCloud HPCPack-ben a projekt egy hn specifikáció és cn specifikáció, amely meghatározza a HPCPack átjárócsomópont és számítási csomópont konfigurációit és receptjeit.

Az alábbiakban egy részleges csomópontdefiníció látható. A Docker-registry csomópont három specifikációt fog futtatni: kötési specifikációt az Okta-projekt 1.3.0-s verziójából, valamint a Docker-projekt 2.0.0-s verziójának alapvető és beállításjegyzék-specifikációit:

[[node docker-registry]]
    Locker = base-storage
    [[[cluster-init okta:bind:1.3.0]]]
    [[[cluster-init docker:core:2.0.0]]]
    [[[cluster-init docker:registry:2.0.0]]]

A záró címke a projekt verziószáma.

[[[cluster-init <project>:<spec>:<project version>]]]

A szekrény egy tárfiók tárolójára és hitelesítő adataira mutató hivatkozás. A csomópontok alapértelmezett tárolóval rendelkeznek, ezért ez az attribútum nem feltétlenül szükséges.

Az Azure CycleCloud egy rövidítést használ a tárfiókokhoz, így https://mystorage.blob.core.windows.net/mycontaineraz://mystorage/mycontainer írható.

A csomópont letölti az összes olyan projektet, amelyre hivatkozik a szekrényből a pogo eszközzel:

pogo get az://mystorage/mycontainer/projects/okta/1.3.0/bind

Ha egy projekt egy csomóponton van definiálva, de nem létezik a várt tárolási helyen, akkor a csomópont jelentést Software Installation Failure küld a CycleCloudnak.

A CycleCloud olyan belső projektekkel rendelkezik, amelyek alapértelmezés szerint az összes csomóponton futnak, hogy speciális kötet- és hálózatkezelést végezzenek, és beállítsa a CycleCloud felé történő kommunikációt. Ezek a belső projektek automatikusan a szekrénybe vannak tükrözve.

A felhasználó felelős a további projektek tükrözéséért a szekrényben. A CycleCloud CLI metódusokat használ a projektek összeállításához:

cyclecloud project init myproject

és tükrözés:

cyclecloud project init mylocker

a szekrényekbe történő projektekhez.

A specifikációk Python-, shell- vagy PowerShell-szkriptből állnak.

Új projekt létrehozása

Új projekt létrehozásához használja a CLI-parancsot cyclecloud project init myproject, ahol myproject a létrehozni kívánt projekt neve található. Ezzel létrehoz egy "myproject" nevű projektet, amelynek egyetlen "default" nevű specifikációja módosítható. A könyvtárfa olyan csontvázfájlokkal lesz létrehozva, amelyeket úgy módosít, hogy a saját adatait is tartalmazza.

Címtárstruktúra

A projektparancs a következő könyvtárakat hozza létre:

      \myproject
          ├── project.ini
          ├── blobs
          ├── templates
          ├── specs
          │   ├── default
          │     └── cluster-init
          │        ├── scripts
          │        ├── files
          │        └── tests
          │     └── chef
          │         ├── site-cookbooks
          │         ├── data_bag
          │         └── roles

A sablonok könyvtára tartalmazza a fürtsablonokat, a specifikációk pedig a projektet meghatározó specifikációkat. A specifikációnak két alkönyvtára van: cluster-init és egyéni chef. A cluster-init speciális jelentéssel rendelkező könyvtárakat tartalmaz, például a szkriptkönyvtárat (a csomóponton lexikális sorrendben végrehajtott szkripteket), fájlokat (a csomópontra helyezendő nyers adatfájlokat) és teszteket (a fürt tesztelési módban való indításakor futtatandó teszteket tartalmaz).

Az egyéni chef alkönyvtár három könyvtárat tartalmaz: site-cookbooks (a szakácskönyv definícióihoz), data_bags (adatzsák-definíciók) és szerepkörök (chef szerepkör-definíciós fájlok).

project.ini

project.ini A a projekt összes metaadatát tartalmazó fájl. A következőket tartalmazhatja:

Paraméter Leírás
name A projekt neve. A szavakat szaggatott vonallal kell elválasztani, például 2018.06.06-
címke A projekt neve. A fürt hosszú neve (szóközökkel) megjelenítési célokra.
típus Három lehetőség: ütemező, alkalmazás, <üres>. Meghatározza a projekt típusát, és létrehozza a megfelelő sablont. Alapértelmezett: alkalmazás
version Formátum: x.x.x

Szekrények

A projekt tartalma egy szekrényben van tárolva. A cycleCloud-telepítésben meghatározott szekrénybe feltöltheti a projekt tartalmát a parancs használatával cyclecloud project upload (locker), ahol a (szekrény) a Cloud Storage-szekrény neve a CycleCloud-telepítésben. Ez a szekrény lesz az alapértelmezett célpont. Másik lehetőségként láthatja, hogy milyen szekrények érhetők el az Ön számára a paranccsal cyclecloud locker list. Egy adott szekrény részletei megtekinthetők a cyclecloud locker show (locker).

Ha egynél több szekrényt ad hozzá, beállíthatja az alapértelmezett cyclecloud project default_target (locker)beállítást, majd egyszerűen futtassa cyclecloud project upload. Beállíthat egy globális alapértelmezett szekrényt is, amelyet a projektek megoszthatnak a paranccsal cyclecloud project default locker (locker) -global.

Megjegyzés

Az alapértelmezett szekrényeket a cyclecloud konfigurációs fájl tárolja (általában ~/.cycle/config.ini), nem pedig a project.ini. Ezzel lehetővé teszi project.ini verzióvezérlését.

A projekt tartalmának feltöltése tömöríti a chef könyvtárakat, és szinkronizálja a chefet és a fürt initet a céltárolóba. Ezek a következő helyen lesznek tárolva:

  • (locker)/projects/(project)/(version)/(spec_name)/cluster-init
  • (locker)/projects/(project)/(version)/(spec_name)/chef

Blob letöltése

A project.ini hivatkozott összes blob letöltésére használható project download a helyi blobkönyvtárba. A parancs a paramétert [locker] használja, és megpróbálja letölteni a project.ini-ben felsorolt blobokat a szekrényből a helyi tárolóba. A rendszer hibát ad vissza, ha a fájlok nem találhatók.

Projekt beállítása

Jellemzők

Új projekt létrehozásakor egyetlen alapértelmezett specifikáció van meghatározva. A parancs segítségével további specifikációkat adhat hozzá a cyclecloud project add_spec projekthez.

Verziókezelés

Alapértelmezés szerint minden projekt 1.0.0-s verzióval rendelkezik. A projektek fejlesztése és üzembe helyezése során egyéni verziót állíthat be a project.ini fájlban.version=x.y.z

Ha például a "locker_url" "az://my-account/my-container/projects" volt, a projekt neve "Order66", a verzió pedig "1.6.9", a specifikáció pedig "alapértelmezett", akkor az URL-cím a következő lesz:

  • az://my-account/my-container/projects/Order66/1.6.9/default/cluster-init
  • az://my-account/my-container/projects/Order66/1.6.9/default/chef

Blobok

Kétféle blob létezik: projektblobok és felhasználói blobok.

Projektblobok

A projektblobok olyan bináris fájlok, amelyeket a projekt szerzője biztosít azzal a feltételezéssel, hogy terjeszthetők (azaz egy nyílt forráskódú projekt bináris fájlja, amelyet törvényesen újraterjeszthet). A projektblobok a projekt "blobok" könyvtárába kerülnek, és amikor feltöltik őket egy szekrénybe, a /project/blobok helyen lesznek elhelyezve.

Blobok projektekhez való hozzáadásához adja hozzá a fájl(oka)t a project.ini:

[[blobs optionalname]]
  Files = projectblob1.tgz, projectblob2.tgz, projectblob3.tgz

Több blob vesszővel elválasztható. Megadhatja a projekt blobkönyvtárának relatív elérési útját is.

Felhasználói blobok

A felhasználói blobok olyan bináris fájlok, amelyeket a projekt szerzője jogilag nem terjeszthet át, például az UGE bináris fájljait. Ezek a fájlok nem a projekthez vannak csomagolva, hanem manuálisan kell a szekrénybe előkészítést végezni. A fájlok a /blobs/my-project/my-blob.tgz helyen találhatók. A felhasználói blobokat nem kell definiálni a project.ini.

Bármely blob letöltéséhez használja a jetpack download parancssori felületről vagy a jetpack_download Chef-erőforrásból származó parancsot. A CycleCloud először a felhasználói blobot keresi. Ha a fájl nem található, a rendszer a projektszintű blobot használja.

Megjegyzés

Felülbírálhat egy projektblobot egy azonos nevű felhasználói blobbal.

Projekt megadása fürtsablonon belül

A Project szintaxisa lehetővé teszi, hogy több specifikációt adjon meg a csomópontokon. Projekt definiálásához használja a következőt:

[[[cluster-init myspec]]]
  Project = myproject # inferred from name
  Version = x.y.z
  Spec = default  # (alternatively, you can name your own spec to be used here)
  Locker = default  # (optional, will use default locker for node)

Megjegyzés

A "spec" után megadott név bármi lehet, de parancsikonként használható és használható néhány > gyakori tulajdonság meghatározásához.

Az alábbiak szerint több specifikációt is alkalmazhat egy adott csomópontra:

[[node scheduler]]
  [[[cluster-init myspec]]]
  Project = myproject
  Version = x.y.z
  Spec = default  # (alternatively, you can name your own spec to be used here)
  Locker = default  # (optional, will use default locker for node)

[[[cluster-init otherspec]]]
Project = otherproject
Version = a.b.c
Spec = otherspec  # (optional)

A projektnév, a specifikációnév és a verzió kettőspontokkal való elválasztásával a CycleCloud automatikusan elemezheti ezeket az értékeket a megfelelő Project/Version/Spec beállítások között:

[[node scheduler]]
  AdditionalClusterInitSpecs = $ClusterInitSpecs
  [[[cluster-init myproject:myspec:x.y.z]]]
  [[[cluster-init otherproject:otherspec:a.b.c]]]

A specifikációk a csomópontok között is öröklődhetnek. Megoszthat például egy közös specifikációt az összes csomópont között, majd egyéni specifikációt futtathat az ütemező csomóponton:

[[node defaults]]
[[[cluster-init my-project:common:1.0.0]]]
Order = 2 # optional
[[node scheduler]]
[[[cluster-init my-project:scheduler:1.0.0]]]
Order = 1 # optional

[[nodearray execute]]
[[[cluster-init my-project:execute:1.0.0]]]
   Order = 1 # optional

Ez az ütemező csomópontra is alkalmazza a specifikációkat és scheduler a common specifikációkat, miközben csak a végrehajtási csomópontra alkalmazza a common paramétereket és execute a specifikációkat.

Alapértelmezés szerint a specifikációk a sablonban megjelenített sorrendben futnak, és először örökölt specifikációkat futtatnak. Order A egy nem kötelező, 1000-ra beállított egész szám, amely a specifikációk sorrendjének meghatározására használható.

Ha a definícióban [[[cluster-init]]] csak egy név van megadva, a rendszer azt feltételezi, hogy a specifikáció neve. Például:

[[[cluster-init myspec]]]
Project = myproject
Version = 1.0.0

A egy érvényes specifikációbeállítás, amelybe Spec=myspec a név utal.

run_list

A project.ini belül megadhat egy runlistát a projekt vagy a specifikáció szintjén:

[spec scheduler]
run_list = role[a], recipe[b]

Ha egy csomópont tartalmazza a specifikációs "ütemezőt", a rendszer automatikusan hozzáfűzi a definiált run_list a korábban definiált runlistához. Ha például a run_list az lennerun_list = recipe[test], [configuration] akkor a végleges runlistát a következő lennerun_list = recipe[cyclecloud], recipe[test], role[a], recipe[b], recipe[cluster_init]: .

A csomópontok specifikációszintjén felül is írhatja a runlistát. Ez lecseréli a project.ini tartalmazott run_list. Ha például a csomópont definícióját a következőre módosítottuk:

[cluster-init test-project:scheduler:1.0.0]
run_list = recipe[different-test]

A rendszer figyelmen kívül hagyja a projektben definiált runlistát, és a fentieket használja helyette. A csomópont végső runlistája ezután a következő lesz run_list = recipe[cyclecloud], recipe[test], recipe[different-test], recipe[cluster_init]: .

Megjegyzés

a runlists csak a szakácsra vonatkozik, és másként nem alkalmazhatók.

Fájlhelyek

A tömörített chef-fájlok a csomópont indításának rendszerindítási fázisában lesznek letöltve. Ezek a $JETPACK_HOME/system/chef/tarballs mappába lesznek letöltve, és ki vannak csomagolva a $JETPACK_HOME/system/chef/chef-repo/ mappába, és a csomópont konvergálásakor használatosak.

Megjegyzés

Egyéni szakácskönyvek futtatásához meg kell adnia őket a csomópont run_list.

A cluster-init fájlok a következő címre lesznek letöltve: /mnt/cluster-init/(project)/(spec)/. A "my-project" és a "my-spec" esetében az /mnt/cluster-init/my-project/my-spec mappában található szkripteket, fájlokat és teszteket fogja látni.

Projektek szinkronizálása

A CycleCloud-projektek a tükrözött fájlokból a fürt helyi felhőtárhelyébe szinkronizálhatók. Állítson be egy SourceLocker attribútumot a sablon egy [cluster-init] szakaszán. A rendszer a megadott szekrény nevét használja a projekt forrásaként, és a fürt indításakor szinkronizálja a tartalmat a szekrénybe. A cluster-init név első részeként a szekrény nevét is használhatja. Ha például a forrástároló "cyclecloud" volt, a következő két definíció megegyezik:

[cluster-init my-project:my-spect:1.2.3]
  SourceLocker=cyclecloud

[cluster-init cyclecloud/my-proect:my-spec:1.2.3]

Nagy méretű fájltároló

A projektek támogatják a nagyméretű fájlokat. Az újonnan létrehozott projekt legfelső szintjén megjelenik a nagyméretű fájlok (blobok) "blobok" könyvtára. Vegye figyelembe, hogy az ebben a könyvtárban elhelyezett bloboknak meghatározott rendeltetésük van, és másként fognak viselkedni, mint a "files" könyvtárban lévő elemek.

A "blobok" könyvtárban lévő elemek specifikációk és verziófüggetlenek: a "blobok" minden eleme megosztható a specifikációk és a projektverziók között. Például egy ritkán változó program telepítője tárolható a "blobokban", és hivatkozhat rá a project.ini. A projektverziók iterálása során az egyetlen fájl változatlan marad, és csak egyszer lesz átmásolva a felhőbeli tárolóba, ami az átviteli és tárolási költségeket takarítja meg.

Blob hozzáadásához egyszerűen helyezzen egy fájlt a "blobok" könyvtárba, és szerkessze a project.ini a fájlra való hivatkozáshoz:

[blobs]
  Files=big_file1.tgz

A parancs használatakor a project upload project.ini hivatkozott összes blob át lesz helyezve a felhőalapú tárolóba.

Naplófájlok

A cluster-init futtatásakor létrehozott naplófájlok a $JETPACK_HOME/logs/cluster-init/(project)/(spec) helyen találhatók.

Fájlok futtatása

Ha egy cluster-init parancsfájl sikeresen lefut, a rendszer elhelyez egy fájlt az /mnt/cluster-init/.run/(project)/(spec) fájlban, hogy az ne fusson újra egy későbbi konvergens konvergensen. Ha ismét futtatni szeretné a szkriptet, törölje a megfelelő fájlt ebben a könyvtárban.

Szkriptkönyvtárak

Amikor a CycleCloud szkripteket hajt végre a szkriptek könyvtárában, környezeti változókat ad hozzá a specifikáció- és projektkönyvtárak elérési útához és nevéhez:

CYCLECLOUD_PROJECT_NAME
CYCLECLOUD_PROJECT_PATH
CYCLECLOUD_SPEC_NAME
CYCLECLOUD_SPEC_PATH

Linux rendszeren egy "test-project" nevű projekt az "alapértelmezett" specifikációval rendelkezik az alábbi elérési utakkal:

CYCLECLOUD_PROJECT_NAME = test-project
CYCLECLOUD_PROJECT_PATH = /mnt/cluster-init/test-project
CYCLECLOUD_SPEC_NAME = default
CYCLECLOUD_SPEC_PATH = /mnt/cluster-init/test-project/default

Csak szkriptek futtatása

CSAK a cluster-init szkriptek futtatása:

jetpack converge --cluster-init

A parancs kimenete az STDOUT-ra és a jetpack.log fájlra is érkezik. Minden szkript kimenete a következőre lesz naplózva:

      $JETPACK_HOME/logs/cluster-init/(project)/(spec)/scripts/(script.sh).out

Egyéni szakács és összeállítható specifikációk

Minden specifikációban van egy chef könyvtár. A konvergens összehívás előtt a rendszer minden specifikációt eltávolít, és kinyeri őket a helyi chef-adattárba, lecserélve a meglévő szakácskönyveket, szerepköröket és adatcsomagokat ugyanazzal a névvel(ek).. Ez abban a sorrendben történik, amelyben a specifikációk meg vannak határozva, így elnevezési ütközés esetén mindig az utolsó meghatározott specifikáció nyer.

jetpack letöltés

Ha egy blobot egy cluster-init szkriptben szeretne letölteni, a paranccsal jetpack download (filename) kérje le a blobok könyvtárából. Ha ezt a parancsot egy cluster-init szkriptből futtatja, meghatározza a projekt és az alap URL-címet. Ha nem fürt-init környezetben szeretné használni, meg kell adnia a projektet (további információért lásd: --help).

A chef-felhasználók jetpack_download számára LWRP lett létrehozva:

jetpack_download "big-file1.tgz" do
  project "my-project"
  end

A chefben az alapértelmezett letöltési hely a #{node[:jetpack][:downloads]}. A fájl célhelyének módosításához használja a következőt:

jetpack_download "foo.tgz" do
  project "my-project"
  dest "/tmp/download.tgz"
end

Ha a chefben használja, meg kell adnia a projektet.