Este artículo fue escrito por Mark Wenning, ingeniero de campo de Canonical.
MAAS implementa un sistema de etiquetas basado en las propiedades físicas de los nodos. La documentación de MAAS sobre etiquetas analiza esto, principalmente desde el punto de vista del uso de etiquetas de hardware existentes con la opción de descripción para –constraints.
También se pueden crear nuevas etiquetas manualmente para facilitar la implementación y la administración de clústeres MAAS y Juju.
Por ejemplo, si desea arrancar Juju en un clúster MAAS y forzar el nodo de arranque para que esté en una máquina específica, puede etiquetar primero el nodo y, a continuación, arrancar usando la etiqueta como restricción.
$ juju bootstrap --constraints "tags=my-juju-bootstrap-node" –debug
Tenga en cuenta que una vez que haya establecido una restricción de etiqueta como esta, los siguientes comandos juju intentarán usar la restricción hasta que la cancele:
$ juju set-constraints "tags="
Otro uso de las etiquetas es marcar varios nodos con la misma etiqueta y, a continuación, implementar solo esos nodos:
$ juju deploy mysql –constraints "tags=my-juju-Dell-nodes" --debug
Antes de poder usar estos comandos, debe iniciar sesión en el servidor regional de MAAS:
$ maas login <profile-name> <host-url> <apikey>
Consulte https://maas.io/docs/ para obtener más información.
Cuando haya terminado, para cerrar sesión en el entorno de la CLI de MAAS, ejecute
$ maas logout maas
Como se explica en la documentación de MAAS sobre etiquetas, las etiquetas se pueden crear y asignar mediante expresiones XPath, en función de la información "lshw" (formateada como XML) asociada con el nodo. Puede acceder a esta información en la parte inferior de la página web de cada nodo haciendo clic en el enlace "Show discovered details" en "Raw discovery data". Parte de la información "lshw" de uno de mis nodos es la siguiente:
... <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> ...
Para agregar más etiquetas descriptivas a los nodos del sistema, puede ejecutar lo siguiente:
$ 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"'
Estos etiquetarán los nodos compatibles con las etiquetas Dell_Machine, Intel_Machine, Virtual_Machine, Rack_Mount, System, Desktop, Laptop, Rack_Mount, Multi-system, 64bit y/o 32bit, y también se aplicarán a cualquier nodo que se agregue más adelante.
Se crea una nueva etiqueta sin formato con el comando de la CLI de MAAS
$ maas <profile> tag new name="<tag-name>" [comment="<comment>"]
Tenga en cuenta que no estamos utilizando la opción de descripción aquí. Así que:
$ maas maas tag new name="my-juju-node" comment="my new juju node"
Esta etiqueta se puede asignar manualmente a uno o más nodos del sistema.
Para asignar una etiqueta a uno o más nodos, ejecute el comando:
$ maas <profile> tag update-nodes <raw-tag-name> add="<system-id>"
¿Cómo se encuentra el ID del sistema de un nodo? Una forma es enumerar la información del nodo y seleccionarla de la estructura. El comando de la CLI de maas
$ maas <profile> nodes list
volcará un objeto con formato JSON (lista de estructuras) que contiene toda la información sobre los nodos. Por ejemplo:
$ 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/" }, ]
El primer nodo de la lista tiene el atributo "hostname" "T110ii.maas". También estamos interesados en el atributo system-id para este nodo: "system_id": "node-2349c038-d792-11e3-8df4-0c54a5f0ce34"
Ahora podemos asignar la nueva etiqueta a este nodo:
$ maas maas tag update-nodes my-juju-bootstap-node add=node-2349c038-d792-11e3-8df4-0c54a5f0ce34
El atributo "tag-names" de la Figura 1 enumera todas las etiquetas asignadas a este nodo, incluida la nueva.
Opciones:
Interfaz de línea de comandos Documentación de MAAS 1.6:
Documentación de Juju (restricciones)