Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure CycleCloud używa szablonów do definiowania konfiguracji klastra. Usługa CycleCloud domyślnie zawiera wiele szablonów. Aby uzyskać pełną listę obsługiwanych szablonów, zobacz GitHub. Możesz tworzyć nowe szablony lub dostosowywać istniejące. Możesz na przykład dostosować istniejący szablon, aby korzystać z maszyn wirtualnych typu spot lub dodać VPC w celu rozszerzenia własnej sieci.
Notacja konfiguracji
Szablony klastrów usługi Azure CycleCloud umożliwiają dodanie jednej lub więcej sekcji [[[konfiguracja]]] do węzła lub tablicy węzłów. W tych sekcjach opisano opcje konfiguracji oprogramowania dla węzłów uruchamianych przez usługę CycleCloud. Użyj notacji kropkowanej, aby określić atrybuty, które chcesz skonfigurować:
[[node scheduler]]
[[[configuration]]]
cycle_server.admin.name = poweruser
cycle_server.admin.pass = super_secret
cycle_server.http_port = 8080
cycle_server.https_port = 8443
Możesz również użyć prefix
notacji, aby określić sekcję konfiguracji i zapisać wpisywanie.
Tę samą konfigurację można również zapisać jako:
[[node scheduler]]
[[[configuration cycle_server]]]
admin.name = poweruser
admin.pass = super_secret
http_port = 8080
https_port = 8443
Węzeł lub tablica węzłów może również zawierać wiele sekcji konfiguracji w razie potrzeby:
[[node scheduler]]
[[[configuration]]]
run_list = role[sge_scheduler_node]
[[[configuration cycle_server.admin]]]
name = poweruser
pass = super_secret
Parametry szablonu klastra
Szablony klastrów mogą zawierać parametry używane do zmiany wartości dla niektórych części klastra. Nie trzeba modyfikować samego szablonu. Ta funkcja jest szczególnie przydatna, gdy chcesz utworzyć wiele podobnych klastrów z niewielkimi różnicami, takimi jak wdrażanie środowisk deweloperskich i produkcyjnych. Aby określić parametr w szablonie klastra, poprzedź zmienną znakiem '$'. Podstawowy przykład szablonu (niefunkcjonalne) z niektórymi parametrami może wyglądać następująco:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
Ten szablon definiuje dwa parametry: $machine_type
i $slots
. Za pomocą tego szablonu można tworzyć pliki tekstowe zawierające wartości tych parametrów zarówno w środowiskach deweloperskich, jak i prod. Możesz użyć formatu JSON lub formatu pliku właściwości Języka Java dla pliku parametrów:
# dev-params.json
{
"machine_type": "H16r",
"slots": 2
}
# prod-params.properties
machine_type = Standard_D4v3
slots = 8
W tym przykładzie tworzony jest plik JSON zawierający parametry dev i plik properties zawierający wartości dla środowiska produkcyjnego.
Uwaga
Sufiks nazwy pliku parametrów jest ważny! Jeśli używasz formatu JSON, nadaj plikowi foo.json
nazwę . Jeśli używasz właściwości języka Java, zakończ nazwę pliku za pomocą polecenia .properties
. Niepoprawnie nazwane pliki parametrów nie będą prawidłowo importowane.
Teraz możesz zaimportować szablon przy użyciu pliku parameters, aby wypełnić brakujące elementy:
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
Możesz również zdefiniować niektóre lub wszystkie parametry w obrębie samego szablonu klastra:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
[parameters]
[[parameter machine_type]]
DefaultValue = Standard_D4v3
[[parameter slots]]
DefaultValue = 2
Szablon definiuje wartości domyślne dla każdego parametru (użyliśmy wartości deweloperskich jako wartości domyślnych).
Teraz możesz zaimportować szablon bez pliku parametrów, a wartości deweloperskie są używane automatycznie. Gdy nadszedł czas na utworzenie klastra prod, użyj pliku prod-params.properties, aby zastąpić wartości określone wewnątrz samego pliku szablonu.
Uwaga
Nazwy parametrów mogą zawierać dowolne litery, cyfry i podkreślenia.
Odwołania do parametrów w szablonie mogą mieć jedną z dwóch form:
$param
: używa wartości pojedynczego parametru o nazwie param
.
${expr}
: oblicza expr
w kontekście wszystkich parametrów, co umożliwia obliczanie wartości dynamicznych. Na przykład:
Attribute = ${(a > b ? a : b) * 100}
To wyrażenie przyjmuje większy z dwóch parametrów, a
i b
, i mnoży go przez 100.
Wyrażenie jest interpretowane i oceniane zgodnie ze specyfikacją języka ClassAd.
Jeśli odwołanie do parametru istnieje samodzielnie, używana jest wartość parametru, która obsługuje typy inne niż ciągi, takie jak wartości logiczne, liczby całkowite i zagnieżdżone struktury, takie jak listy.
Jeśli jednak odwołanie jest osadzone w innym tekście, jego wartość jest konwertowana i uwzględniana w ciągu.
Załóżmy na przykład, że param
jest definiowany jako 456
i przywołyny w dwóch miejscach:
- Attribute1 = $param
- Atrybut2 = 123$param
Wartość Attribute1
to liczba 456
, ale wartość parametru Attribute2
to ciąg "123456"
.
${param}
działa tak samo jak $param
, więc można go użyć do uwzględnienia odwołań do parametrów w bardziej złożonych sytuacjach:
- Attribute3 = 123$param789
- Atrybut4 = 123${param}789
Attribute3
szuka parametru o nazwie param789
, ale Attribute4
używa wartości param
, aby uzyskać "123456789"
.
Typy maszyn
Usługa Azure CycleCloud obsługuje wiele typów maszyn za pośrednictwem atrybutu MachineType
. Rozwiązanie próbuje uzyskać pojemność w kolejności, którą podajesz.
Specyfikacje inicjowania klastra
Aplikacja internetowa Azure CycleCloud umożliwia wybranie specyfikacji projektu inicjowania klastra podczas tworzenia nowego klastra. Skonfiguruj specyfikacje projektu w szablonie klastra:
[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]]]
Po dodaniu tego parametru do szablonu klastra możesz użyć selektora plików, aby wybrać odpowiednie specyfikacje projektu podczas tworzenia klastra.
Maszyny wirtualne typu spot
Aby zmniejszyć koszty obciążeń, ustaw Interruptible
na true
. To ustawienie oznacza instancję jako maszynę wirtualną typu spot i umożliwia jej korzystanie z nadwyżkowej pojemności, gdy jest ona dostępna. Należy pamiętać, że te wystąpienia nie są zawsze dostępne i mogą być w dowolnym momencie przejęte, więc mogą nie być odpowiednie dla Twojego obciążenia roboczego.
Domyślnie po ustawieniu Interruptible
wartości true wystąpienie używa maszyn wirtualnych typu spot z maksymalną ceną ustawioną na -1. To ustawienie oznacza, że wystąpienie nie jest usuwane na podstawie ceny. Cena wystąpienia jest bieżącą ceną maszyn wirtualnych typu spot lub ceną wystąpienia standardowego, w zależności od tego, która wartość jest mniejsza, o ile jest dostępna pojemność i limit przydziału. Aby ustawić niestandardową maksymalną cenę, użyj atrybutu MaxPrice
w żądanym węźle lub tablicy węzłów.
[cluster demo]
[[nodearray execute]]
Interruptible = true
MaxPrice = 0.2
Tablice przeszukiwań
Można odwołać się do jednego parametru, aby obliczyć określoną wartość za pomocą tabeli wyszukiwania. Załóżmy na przykład, że masz parametr do użycia dla obrazu z dwoma opcjami w tym przypadku:
[[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
Możesz również pobrać wersję systemu operacyjnego wybranego obrazu i użyć jej do innej konfiguracji, czyniąc e parametrem, którego wartość jest tabelą wyszukiwania wartości.
[[parameter AmiLookup]]
ParameterType = hidden
[[[record DefaultValue]]]
image-1000 = Ubuntu 20.04
image-2000 = Ubuntu 22.04
Ten parametr jest ukryty, więc nie jest wyświetlany w interfejsie użytkownika.
Możesz pobrać wersję systemu operacyjnego używaną dla wybranego obrazu w dowolnym miejscu w definicji klastra:
[[node node]]
[[[configuration]]]
version = ${AmiLookup[MachineImage]}
Integracja z graficznym interfejsem użytkownika
Definiowanie parametrów w szablonie klastra umożliwia korzystanie z graficznego interfejsu użytkownika usługi Azure CycleCloud. Na przykład podczas definiowania parametrów użyj następujących atrybutów, aby ułatwić tworzenie graficznego interfejsu użytkownika:
# 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
Graficzny interfejs użytkownika zawiera atrybuty Etykieta i Opis , które są wyświetlane w graficznym interfejsie użytkownika, a także opcjonalny atrybut ParameterType . Atrybut ParameterType umożliwia wyświetlanie niestandardowych elementów interfejsu użytkownika. W poprzednim przykładzie Cloud.MachineType
wartość wyświetla listę rozwijaną zawierającą wszystkie dostępne typy maszyn. Pozostałe wartości ParametrType to:
Typ parametru | Opis |
---|---|
Cloud.MachineType | Wyświetla listę rozwijaną zawierającą wszystkie dostępne typy maszyn. |
Cloud.Credentials | Wyświetla listę rozwijaną zawierającą wszystkie dostępne poświadczenia. |
Region chmury | Wyświetla listę rozwijaną zawierającą wszystkie dostępne regiony. |
Obsługa programu Chef Server
Usługa Azure CycleCloud obsługuje program ChefServer.
Utwórz plik chefserver.json
i dodaj poświadczenia.
ValidationKey
odpowiada plikowi validation.pem
dla serwera Chef. Należy również podać wartość validation_client_name
, jeśli zmienisz ją z wartości domyślnej elementu chef-validator
:
{
"AdType" : "Cloud.Locker",
"ValidationKey" : "YOURVALIDATION.PEMHERE",
"ValidationClientName" : "chef-validator",
"Credentials" : "default",
"Location" : "https://mychefserver",
"ChefRepoType" : "chefserver",
"LockerType" : "chefrepo",
"Name" : "chefrepo",
"AccountId" : "default",
"Shared" : false
}
Następnie umieść plik w katalogu /opt/cycle_server/config/data
. Serwer automatycznie importuje plik.
Niestandardowe obrazy użytkowników w szablonach
Usługa Azure CycleCloud obsługuje obrazy niestandardowe w szablonach. Identyfikator obrazu (identyfikator zasobu) można określić bezpośrednio za pomocą ImageId
lub dodać obraz do rejestru obrazów. Po dodaniu obrazu do rejestru można odwoływać się do niego przy użyciu Image
albo ImageName
na węźle. Obraz zostanie wyświetlony na liście rozwijanej obrazu na stronie tworzenia klastra.
Obrazy w rejestrze obrazów składają się z Package
rekordu, który identyfikuje zawartość obrazu logicznego i co najmniej jeden odpowiadający rekord Artifact
określający rzeczywisty identyfikator obrazu u odpowiedniego dostawcy usług w chmurze. Na przykład niestandardowy obraz z zainstalowanym językiem R może składać się z tego rekordu pakietu:
AdType = "Package"
Name = "r_execute"
Version = "2.1.1"
PackageType = "image"
Label = "R"
Po dodaniu tego rekordu można określić obraz, dołączając Image = R
lub ImageName = r_execute
do szablonu klastra.
Jeśli ten obraz istniał jako pojedyncza maszyna wirtualna w regionie East US z identyfikatorem /subscriptions/xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/images/MyCustomImage
, należy przechować następujący artefakt:
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"
Musisz określić Provider
na artefakcie.
Możesz dodać dowolną liczbę artefaktów dla danego pakietu obrazów, ale musisz uwzględnić wszystkie artefakty wymagane do użycia tego obrazu we wszystkich żądanych lokalizacjach (jeden na konto dostawcy usług w chmurze, regiony, projekty itd.). Nazwa artefaktu nie jest ważna, z tą różnicą, że musi być unikatowa dla wszystkich artefaktów dla danego pakietu i wersji. Zwykle zalecamy używanie kombinacji dostawcy i szczegółów specyficznych dla dostawcy, takich jak region. Usługa CycleCloud automatycznie wybiera odpowiedni artefakt, aby był zgodny z dostawcą i wszystkimi szczegółami specyficznymi dla dostawcy, ale używa atrybutu dostawcy (i regionu itd.) zamiast analizować nazwę.
Jeśli dodasz więcej niż jeden pakiet obrazów o tej samej nazwie, każdy pakiet musi mieć inny numer wersji. Usługa CycleCloud automatycznie wybiera obraz o najwyższej wersji po uruchomieniu instancji. Traktuje numer wersji jako ciąg kropkowany i porównuje każdą część jako liczbę. Aby zastąpić to zachowanie, określ ImageVersion
na węźle jako dosłowny numer wersji (na przykład 1.2
) lub numer wersji z symbolem wieloznacznym (na przykład 1.x
).