Autorem tego artykułu jest Mark Wenning, inżynier terenowy firmy Canonical.
MAAS wdraża system znaczników w oparciu o fizyczne właściwości węzłów. Dokumentacja MAAS dotycząca znaczników omawia tę kwestię, głównie z punktu widzenia używania istniejących znaczników sprzętowych z opcją opisu dla –constraints.
Nowe tagi można również tworzyć ręcznie, aby ułatwić wdrażanie klastrów MAAS i Juju oraz zarządzanie nimi.
Na przykład, jeśli chcesz uruchomić Juju w klastrze MAAS i wymusić, aby węzeł bootstrap znajdował się na określonej maszynie, możesz najpierw oznaczyć węzeł, a następnie uruchomić bootstrap używając tagu jako ograniczenia.
$ juju bootstrap --constraints "tags=my-juju-bootstrap-node" –debug
Zauważ, że po ustawieniu takiego ograniczenia znacznika, następujące polecenia juju będą próbowały użyć tego ograniczenia, dopóki go nie anulujesz:
$ juju set-constraints "tags="
Innym zastosowaniem tagów jest oznaczenie kilku węzłów tym samym tagiem, a następnie wdrożenie tylko w tych węzłach:
$ juju deploy mysql –constraints "tags=my-juju-Dell-nodes" --debug
Aby można było korzystać z tych poleceń, należy zalogować się do serwera regionu MAAS:
$ maas login <profile-name> <host-url> <apikey>
Szczegółowe informacje można znaleźć w https://maas.io/docs/ .
Po zakończeniu, aby wylogować się ze środowiska wiersza poleceń MAAS, uruchom polecenie
$ maas logout maas
Jak omówiono w dokumentacji MAAS dotyczącej znaczników, znaczniki mogą być tworzone i przypisywane przy użyciu wyrażeń XPath na podstawie informacji "lshw" (sformatowanych jako XML) skojarzonych z węzłem. Informacje te można uzyskać w dolnej części strony internetowej każdego węzła, klikając łącze "Show discovered details" w sekcji "Raw discovery data". Część informacji "lshw" dla jednego z moich węzłów jest następująca:
... <lshw:node id="t410" claimed="true" class="system" handle="DMI:0100"> <lshw:description>System</lshw:description> <lshw:product>PowerEdge T410 ()</lshw:product> <lshw:vendor>Dell Inc.</lshw:vendor> <lshw:serial>RHXT410</lshw:serial> <lshw:width units="bits">64</lshw:width> <lshw:configuration> <lshw:setting id="boot" value="normal"/> <lshw:setting id="chassis" value="server"/> <lshw:setting id="uuid" value="44454C4C-4800-1058-8054-D2C04F343130"/> </lshw:configuration> <lshw:capabilities> ...
Aby dodać więcej znaczników opisowych do węzłów w systemie, można wykonać:
$ maas maas tags new name="Dell_Machine" definition='//node[@class="system"]/vendor = "Dell Inc."' $ maas maas tags new name="Intel_Machine" definition='//node[@class="system"]/vendor = "Intel Corp."' $ maas maas tags new name="Virtual_Machine" definition='//node[@class="system"]/vendor = "QEMU"' $ maas maas tags new name="Laptop" definition='//node[@class="system"]/description = "Laptop"' $ maas maas tags new name="Rack_Mount" definition='//node[@class="system"]/description = "Rack Mount Chassis"' $ maas maas tags new name="Mini_Tower" definition='//node[@class="system"]/description = "Mini Tower Computer"' $ maas maas tags new name="System" definition='//node[@class="system"]/description = "System"' $ maas maas tags new name="Desktop" definition='//node[@class="system"]/description = "Desktop Computer"' $ maas maas tags new name="Blade" definition='//node[@class="system"]/description = "Multi-system"' $ maas maas tags new name="Intel_CPU" definition='//node[@class="processor"]/vendor = "Intel Corp."' $ maas maas tags new name="AMD_CPU" definition='//node[@class="processor"]/vendor = "Advanced Micro Devices [AMD]"' $ maas maas tags new name="64bit" definition='//node[@class="system"]/width="64"' $ maas maas tags new name="32bit" definition='//node[@class="system"]/width="32"'
Będą one oznaczać zgodne węzły znacznikami Dell_Machine, Intel_Machine, Virtual_Machine, Rack_Mount, System, Desktop, Laptop, Rack_Mount, Multi-system, 64-bit i/lub 32bit i będą również stosowane do wszystkich węzłów, które zostaną dodane później.
Nowy znacznik raw jest tworzony za pomocą komendy CLI MAAS
$ maas <profile> tag new name="<tag-name>" [comment="<comment>"]
Pamiętaj, że nie używamy tutaj opcji opisu. Więc:
$ maas maas tag new name="my-juju-node" comment="my new juju node"
Ten znacznik można ręcznie przypisać do jednego lub większej liczby węzłów w systemie.
Aby przypisać tag do węzła lub węzłów, uruchom polecenie:
$ maas <profile> tag update-nodes <raw-tag-name> add="<system-id>"
Jak znaleźć identyfikator systemowy węzła? Jednym ze sposobów jest wyświetlenie informacji o węźle i wybranie ich ze struktury. Polecenie interfejsu wiersza polecenia maaS
$ maas <profile> nodes list
zrzuci obiekt w formacie JSON (listę struktur) zawierający wszystkie informacje o węzłach. Na przykład:
$ maas maas nodes list [ { "status": 4, "macaddress_set": [ { "resource_uri": "/MAAS/api/1.0/nodes/node-2349c038-d792-11e3-8df4-0c54a5f0ce34/macs/bc%3A30%3A5b%3Ae3%3A21%3A15/", "mac_address": "bc:30:5b:e3:21:15" } ], "hostname": "T110ii.maas", "zone": { "resource_uri": "/MAAS/api/1.0/zones/default/", "name": "default", "description": "" }, "routers": [], "netboot": true, "cpu_count": 8, "storage": 239825, "owner": null, "system_id": "node-2349c038-d792-11e3-8df4-0c54a5f0ce34", "architecture": "amd64/generic", "memory": 8192, "power_type": "ipmi", "tag_names": [ "use-fastpath-installer", "my-juju-boostrap-node" ], "ip_addresses": [ "192.168.0.53" ], "resource_uri": "/MAAS/api/1.0/nodes/node-2349c038-d792-11e3-8df4-0c54a5f0ce34/" }, ]
Pierwszy węzeł na liście ma atrybut "hostname" "T110ii.maas". Interesuje nas również atrybut system-id dla tego węzła: "system_id": "Node-2349C038-D792-11E3-8DF4-0C54A5F0CE34"
Możemy teraz przypisać nowy tag do tego węzła:
$ maas maas tag update-nodes my-juju-bootstap-node add=node-2349c038-d792-11e3-8df4-0c54a5f0ce34
Atrybut "tag-names" na rysunku 1 zawiera listę wszystkich tagów przypisanych do tego węzła, w tym nowego.
Opcje:
Interfejs wiersza poleceń Dokumentacja MAAS 1.6:
Dokumentacja Juju (Ograniczenia)