Küme Şablonları

Azure CycleCloud, küme yapılandırmalarını tanımlamak için şablonları kullanır. CycleCloud'da varsayılan olarak bir dizi şablon bulunur ve desteklenen şablonların tam listesi GitHub'da sağlanır. Yeni şablonlar oluşturabilir veya mevcut şablonları özelleştirebilirsiniz. Örneğin, Spot VM'lerden yararlanmak için mevcut bir şablonu özelleştirmek veya kendi ağınızı genişletmek için bir VPC eklemek isteyebilirsiniz.

Yapılandırma Gösterimi

Azure CycleCloud küme şablonlarının tümü, bir düğüme veya nodearray'ye ait bir veya daha fazla [[yapılandırma]]] bölümüne sahip olma seçeneğine sahiptir. Bu bölümlerde CycleCloud tarafından başlatılan düğümlerle ilgili yazılım yapılandırma seçenekleri belirtilir. Noktalı notasyon, yapılandırmak istediğiniz öznitelikleri belirtmek için kullanılır:

[[node scheduler]]
  [[[configuration]]]
  cycle_server.admin.name = poweruser
  cycle_server.admin.pass = super_secret
  cycle_server.http_port = 8080
  cycle_server.https_port = 8443

Yazmayı kaydetmek için gösterimi kullanarak prefix bir yapılandırma bölümü de belirtebilirsiniz. Aynı yapılandırma şu şekilde de yazılabilir:

[[node scheduler]]
  [[[configuration cycle_server]]]
  admin.name = poweruser
  admin.pass = super_secret
  http_port = 8080
  https_port = 8443

Düğüm/nodearray gerekirse birden çok yapılandırma bölümü de içerebilir:

[[node scheduler]]
  [[[configuration]]]
  run_list = role[sge_scheduler_node]

  [[[configuration cycle_server.admin]]]
  name = poweruser
  pass = super_secret

Küme Şablonu Parametreleri

Küme şablonları, şablonun kendisini değiştirmek zorunda kalmadan kümenin belirli bölümlerinin değerlerini değiştiren parametreler içerebilir. Bu özellikle geliştirme ve üretim ortamlarının dağıtılması gibi küçük farklılıklara sahip benzer birçok kümenin istendiği durumlarda kullanışlıdır. Küme şablonu içinde parametre belirtmek için söz dizimi, bir değişkene '$' ön eki eklemektir. Bazı parametreler içeren temel bir şablon örneği (işlevsel olmayan) şöyle görünebilir:

# template.txt
[cluster gridengine]

  [[node scheduler]]
  MachineType = $machine_type

    [[[configuration]]]
    gridengine.slots = $slots

Bu şablon iki parametre tanımlar: $machine_type ve $slots. Bu şablonu kullanarak hem geliştirme hem de üretim ortamlarındaki parametrelerin değerlerini içeren metin dosyaları tanımlayabilirsiniz. Parametre dosyası JSON biçiminde veya Java özellikleri dosya biçiminde olabilir:

# dev-params.json
{
  "machine_type": "H16r",
  "slots": 2
}

# prod-params.properties
machine_type = Standard_D4v3
slots = 8

Bu, geliştirme parametrelerini içeren bir JSON dosyası ve üretim için değerleri içeren bir .properties dosyası oluşturur.

Not

Parametre dosyanızın dosya adı soneki önemlidir! JSON kullanıyorsanız dosyanızın adı foo.jsonolmalıdır. Java özellikleri kullanılıyorsa dosyanızın ile .propertiesbitmesi gerekir. Yanlış adlandırılmış parametre dosyaları düzgün içeri aktarılmaz.

Artık eksik parçaları doldurmak için parametre dosyasını kullanarak şablonu içeri aktarabilirsiniz:

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

Küme şablonunun içindeki parametrelerin bir kısmını veya tümünü tanımlamak da mümkündür:

# template.txt
[cluster gridengine]

  [[node scheduler]]
  MachineType = $machine_type

    [[[configuration]]]
    gridengine.slots = $slots

[parameters]
  [[parameter machine_type]]
  DefaultValue = Standard_D4v3

  [[parameter slots]]
  DefaultValue = 2

Her parametrenin varsayılan değerleri şablon içinde tanımlanır (varsayılan olarak 'dev' değerlerini kullandık).

Artık şablonu parametre dosyası olmadan içeri aktarmak mümkündür ve 'dev' değerleri otomatik olarak kullanılır. 'Prod' kümesi oluşturma zamanı geldiğinde, şablon dosyasının içinde belirtilen değerlerin üzerine yazmak için prod-params.properties dosyasını kullanabilirsiniz.

Not

Parametre adları herhangi bir harf, sayı ve alt çizgi içerebilir.

Şablondaki parametre başvuruları iki biçimden birini alabilir:

$param: adlı tek bir parametrenin değerini kullanır param

${expr}: Dinamik expr değerleri hesaplamanıza olanak tanıyan tüm parametreler bağlamında değerlendirir. Örneğin:

Attribute = ${(a > b ? a : b) * 100}

Bu, abve iki parametreden daha büyük olanını alır ve 100 ile çarpabilir. İfade ClassAd dil belirtimine göre yorumlanır ve değerlendirilir.

Tek başına bir parametre başvurusu varsa, boole değerleri, tamsayılar ve listeler gibi iç içe yerleştirilmiş yapılar gibi dize olmayan türleri destekleyen parametrenin değeri kullanılır. Ancak, başvuru başka bir metne eklenmişse, değeri dönüştürülür ve bir dizeye eklenir. Örneğin, olarak tanımlandığını 456 ve iki yerde başvurıldığını varsayalımparam:

  • Öznitelik1 = $param
  • Öznitelik2 = 123$param

değeri Attribute1 numarası 456olabilir, ancak değeri Attribute2 dizesi "123456"olur. daha karmaşık durumlarda parametre başvurularını eklemenizi sağlayan ile aynı $paramolduğunu ${param} unutmayın:

  • Öznitelik3 = 123$param789
  • Öznitelik4 = 123${param}789

Attribute3 adlı param789parametreyi arar, ancak Öznitelik4 param değerini kullanarak değerini alır "123456789".

Makine Türleri

Azure CycleCloud, özniteliği aracılığıyla MachineType birden çok makine türünü destekler. Listelenen sırayla kapasite elde etmeye çalışır.

Küme Başlatma Özellikleri

Azure CycleCloud web uygulaması, kullanıcıların yeni bir küme oluştururken cluster-init proje belirtimlerini seçmesine olanak tanır. Proje belirtimleri küme şablonu içinde ayarlanır:

[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]]]

Bu parametre küme şablonunuza eklendikten sonra, kullanıcınız yeni bir küme oluştururken uygun proje belirtimlerini seçmek için dosya seçiciyi kullanabilir.

Spot Sanal Makineler

İş yüklerinizin maliyetini azaltmak için ayarlayabilirsiniz Interruptible = true. Bu, örneğinizi Spot olarak işaretler ve kullanılabilir olduğunda fazla kapasite kullanır. Bu örneklerin her zaman kullanılamadığını ve herhangi bir zamanda ön plana çıkarılabildiğini, yani her zaman iş yükünüz için uygun olmadığını unutmayın.

Varsayılan olarak true olarak ayarlandığında Interruptible en yüksek fiyat -1 olarak ayarlanmış spot örnekler kullanılır; bu da örneğin fiyata göre çıkarılmayacağı anlamına gelir. Kapasite ve kota mevcut olduğu sürece, örneğin fiyatı Spot için geçerli fiyat veya standart örneğin fiyatı (hangisi daha düşükse) olacaktır. Özel bir maksimum fiyat ayarlamak isterseniz istenen düğümde veya nodearray'de özniteliğini kullanın MaxPrice .

[cluster demo]

  [[nodearray execute]]
  Interruptible = true
  MaxPrice = 0.2

Arama Tabloları

Bir parametrenin diğerine başvurması ve arama tablosuyla belirli bir değeri hesaplaması olabilir. Örneğin, görüntü için kullanılacak bir parametreniz olduğunu ve bu durumda iki seçeneğiniz olduğunu varsayalım:

[[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

Ayrıca seçilen görüntünün işletim sistemi sürümünü alabilir ve e değeri değer arama tablosu olan bir parametre yaparak bunu diğer yapılandırmalar için kullanabilirsiniz:

[[parameter AmiLookup]]
  ParameterType = hidden
  [[[record DefaultValue]]]
      image-1000 = Ubuntu 20.04
      image-2000 = Ubuntu 22.04

Kullanıcı arabiriminde görünmemesi için bunun gizlendiğini unutmayın.

Seçilen görüntü için kullanılan işletim sistemi sürümünü küme tanımında başka herhangi bir yere alabilirsiniz:

[[node node]]
[[[configuration]]]
version = ${AmiLookup[MachineImage]}

GUI Tümleştirmesi

Küme şablonunda parametrelerin tanımlanması, Azure CycleCloud GUI'sinin avantajlarından birinin yararlanmasını sağlar. Örnek olarak, parametreleri tanımlarken GUI oluşturmaya yardımcı olmak için aşağıdaki öznitelikler kullanılabilir:

# 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

GUI'de ve isteğe bağlı "ParameterType" özniteliğinde görünecek olan "Label" ve "Description" öznitelikleri dahil edilir. "ParameterType" özel kullanıcı arabirimi öğelerinin görüntülenmesine izin verir. Yukarıdaki örnekteki "Cloud.MachineType" değeri tüm kullanılabilir makine türlerini içeren bir açılan menü görüntüler. Diğer ParameterType değerleri şunlardır:

Parametre Türü Description
Cloud.MachineType Kullanılabilir tüm makine türlerini içeren bir açılan menü görüntüler.
Cloud.Credentials Kullanılabilir tüm kimlik bilgilerini içeren bir açılan menü görüntüler.
Cloud.Region Kullanılabilir tüm bölgeleri içeren bir açılan menü görüntüler.

Chef Server Desteği

Azure CycleCloud ChefServer'ı desteklemektedir.

Dosyayı chefserver.json oluşturun ve kimlik bilgilerinizi ekleyin. ValidationKey chef sunucunuzun validation.pem dosyasına karşılık gelir. Ayrıca bunu varsayılan "chef-validator" değerinden değiştirip değiştirmediğiniz de kanıtlanmalıdır validation_client_name :

{
"AdType" : "Cloud.Locker",
"ValidationKey" : "YOURVALIDATION.PEMHERE",
"ValidationClientName" : "chef-validator",
"Credentials" : "default",
"Location" : "https://mychefserver",
"ChefRepoType" : "chefserver",
"LockerType" : "chefrepo",
"Name" : "chefrepo",
"AccountId" : "default",
"Shared" : false
}

Ardından, dosyayı dizinine /opt/cycle_server/config/datayerleştirin. Otomatik olarak içeri aktarılır.

Şablonlardaki Özel Kullanıcı Görüntüleri

Azure CycleCloud, şablonlarda özel görüntüleri destekler. Görüntü kimliğini (kaynak kimliği) doğrudan ile ImageIdbelirtin veya görüntüyü görüntü kayıt defterine ekleyin. Görüntü kayıt defterindeyken veya düğümünüzün üzerinde görüntüye ImageImageName başvurun. Küme oluşturma sayfasındaki görüntü açılan listesinde görünür.

Görüntü kayıt defterindeki görüntüler, mantıksal görüntünün içeriğini tanımlayan bir Package kayıt ve uygun bulut sağlayıcısında gerçek görüntü kimliğini belirten bir veya daha fazla kayıt Artifact içerir. Örneğin, üzerinde R yüklü özel bir görüntü şu Paket kaydından oluşabilir:

AdType = "Package"
Name = "r_execute"
Version = "2.1.1"
PackageType = "image"
Label = "R"

Bu kaydı ekledikten sonra, küme şablonuna veya ImageName = r_execute öğesini ekleyerek Image = R bu görüntüyü belirtebilirsiniz.

Bu görüntü, kimliğine /subscriptions/xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/images/MyCustomImagesahip kullanımda tek bir Sanal Makine olarak mevcutsa, aşağıdaki yapıtın depolanması gerekir:

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"

Yapıtta belirtmelisiniz Provider .

Belirli bir görüntü paketi için istediğiniz kadar yapıt ekleyebilirsiniz, ancak bu görüntüyü kullanmak için gereken tüm yapıtları istediğiniz tüm "konumlara" (bulut sağlayıcısı hesabı, bölgeleri, projeleri vb.) eklemeniz gerekir. Yapıtın adı önemli değildir, ancak belirli bir paket ve sürüm için tüm yapıtlar için benzersiz olması gerekir. Sağlayıcı ve sağlayıcıya özgü ayrıntıların (örn. bölge) bir bileşiminin kullanılması genellikle önerilir. CycleCloud, sağlayıcıyla ve sağlayıcıya özgü ayrıntılarla eşleşecek doğru yapıtı otomatik olarak seçer, ancak Ad ayrıştırmak yerine Sağlayıcı özniteliğini (ve Bölge vb.) kullanır.

Aynı ada sahip birden fazla görüntü paketi eklerseniz, bunların farklı sürüm numaraları olmalıdır. Bir örneği başlatırken CycleCloud, sürüm numarasını noktalı bir dize olarak değerlendirip her bölümü bir sayı olarak karşılaştırarak en yüksek sürüm numarasına sahip görüntüyü otomatik olarak seçer. Bunu geçersiz kılmak için düğümde değişmez değer (örneğin1.2) veya joker karakter (1.x) olarak belirtinImageVersion.