Questo articolo è stato scritto da Mark Wenning, Field Engineer di Canonical.
MAAS implementa un sistema di tag basato sulle proprietà fisiche dei nodi. La documentazione MAAS sui tag discute questo aspetto, principalmente dal punto di vista dell'utilizzo dei tag hardware esistenti con l'opzione di descrizione per –constraints.
I nuovi tag possono anche essere creati manualmente per semplificare l'implementazione e la gestione dei cluster MAAS e Juju.
Ad esempio, se si desidera eseguire il bootstrap di Juju su un cluster MAAS e forzare il nodo di bootstrap su un computer specifico, è possibile contrassegnare prima il nodo, quindi eseguire il bootstrap utilizzando il tag come vincolo.
$ juju bootstrap --constraints "tags=my-juju-bootstrap-node" –debug
Si noti che una volta impostato un vincolo di tag come questo, i seguenti comandi juju tenteranno di utilizzare il vincolo fino a quando non lo si annulla:
$ juju set-constraints "tags="
Un altro utilizzo dei tag consiste nel contrassegnare più nodi con lo stesso tag e quindi implementare solo in tali nodi:
$ juju deploy mysql –constraints "tags=my-juju-Dell-nodes" --debug
Prima di poter utilizzare questi comandi, è necessario accedere al server dell'area MAAS:
$ maas login <profile-name> <host-url> <apikey>
Fare riferimento a https://maas.io/docs/ per i dettagli.
Al termine, per disconnettersi dall'ambiente CLI MAAS, eseguire
$ maas logout maas
Come illustrato nella documentazione MAAS sui tag, i tag possono essere creati e assegnati utilizzando le espressioni XPath, in base alle informazioni "lshw" (formattate come XML) associate al nodo. È possibile accedere a queste informazioni nella parte inferiore della pagina web di ciascun nodo cliccando sul link "Show discovered details" in "Raw discovery data". Parte delle informazioni "lshw" per uno dei nodi è la seguente:
... <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> ...
Per aggiungere tag più descrittivi ai nodi nel sistema, è possibile eseguire:
$ 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"'
Questi contrassegneranno i nodi conformi con i tag Dell_Machine, Intel_Machine, Virtual_Machine, Rack_Mount, Sistema, Desktop, Notebook, Rack_Mount, Multisistema, 64 bit e/o 32 bit e verranno applicati anche a tutti i nodi aggiunti in un secondo momento.
Viene creato un nuovo tag raw con il comando CLI MAAS
$ maas <profile> tag new name="<tag-name>" [comment="<comment>"]
Si noti che non stiamo utilizzando l'opzione di descrizione qui. Così:
$ maas maas tag new name="my-juju-node" comment="my new juju node"
Questo tag può essere assegnato manualmente a uno o più nodi del sistema.
Per assegnare un tag a uno o più nodi, eseguire il comando:
$ maas <profile> tag update-nodes <raw-tag-name> add="<system-id>"
Come si trova l'ID di sistema di un nodo? Un modo consiste nell'elencare le informazioni sul nodo e selezionarle dalla struct. Comando maaS CLI
$ maas <profile> nodes list
verrà eseguito il dump di un oggetto in formato JSON (elenco di struct) contenente tutte le informazioni sui nodi. Ad esempio:
$ 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/" }, ]
Il primo nodo nell'elenco ha un attributo "hostname" "T110ii.maas". Ci interessa anche l'attributo system-id per questo nodo: "system_id": "nodo-2349c038-d792-11e3-8df4-0c54a5f0ce34"
Ora possiamo assegnare il nuovo tag a questo nodo:
$ maas maas tag update-nodes my-juju-bootstap-node add=node-2349c038-d792-11e3-8df4-0c54a5f0ce34
L'attributo "tag-names" nella Figura 1 elenca tutti i tag assegnati a questo nodo, incluso quello nuovo.
Opzioni:
Interfaccia della riga di comando Documentazione di MAAS 1.6:
Documentazione Juju (vincoli)