Эта статья была написана Марком Веннингом (Mark Wenning), каноническим инженером по эксплуатации на местах.
В MAAS реализована система тегов, основанная на физических свойствах узлов. В документации MAAS по тегам это обсуждается, в основном с точки зрения использования существующих аппаратных тегов с опцией описания для –constraints.
Новые метки также можно создавать вручную, чтобы упростить развертывание кластеров MAAS и Juju и управление ими.
Например, если вы хотите выполнить начальную загрузку Juju в кластере MAAS и принудительно разместить узел начальной загрузки на определенном компьютере, вы можете сначала пометить узел, а затем выполнить начальную загрузку, используя тег в качестве ограничения.
$ juju bootstrap --constraints "tags=my-juju-bootstrap-node" –debug
Обратите внимание, что после того, как вы установили подобное ограничение тега, следующие команды juju будут пытаться использовать ограничение до тех пор, пока вы его не отмените:
$ juju set-constraints "tags="
Теги также используются для маркировки нескольких узлов одним и тем же тегом, а затем развертывания только на этих узлах:
$ juju deploy mysql –constraints "tags=my-juju-Dell-nodes" --debug
Перед использованием этих команд необходимо выполнить вход на сервер региона MAAS:
$ maas login <profile-name> <host-url> <apikey>
Подробные сведения см. в https://maas.io/docs/ .
После этого для выхода из среды интерфейса командной строки MAAS выполните команду
$ maas logout maas
Как описано в документации MAAS по тегам, теги могут быть созданы и назначены с помощью выражений XPath на основе информации «lshw» (в формате XML), связанной с узлом. Вы можете получить доступ к этой информации в нижней части веб-страницы каждого узла, нажав на ссылку «Show discovered details» в разделе «Raw discovery data». Часть информации «lshw» для одного из моих узлов выглядит следующим образом:
... <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> ...
Чтобы добавить более информативные теги к узлам в системе, можно выполнить:
$ 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"'
Они будут помечать соответствующие узлы тегами Dell_Machine, Intel_Machine, Virtual_Machine, Rack_Mount, System, Desktop, Laptop, Rack_Mount, Multi-system, 64-bit и/или 32bit, а также применяются ко всем узлам, которые будут добавлены позже.
Новый необработанный тег создается с помощью команды MAAS cli
$ maas <profile> tag new name="<tag-name>" [comment="<comment>"]
Обратите внимание, что здесь мы не используем опцию description. Так:
$ maas maas tag new name="my-juju-node" comment="my new juju node"
Этот код можно вручную присвоить одному или нескольким узлам в системе.
Чтобы назначить тег узлу или узлам, выполните команду:
$ maas <profile> tag update-nodes <raw-tag-name> add="<system-id>"
Как узнать системный идентификатор узла? Один из способов — вывести список информации об узле и выбрать ее из структуры. Команда maas cli
$ maas <profile> nodes list
выгрузит объект в формате JSON (список структур), содержащий всю информацию об узлах. Пример.
$ 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/" }, ]
Первый узел в списке имеет атрибут «hostname» «T110ii.maas». Нас также интересует атрибут system-id для этого узла: "system_id": «узел-2349c038-d792-11e3-8df4-0c54a5f0ce34»
Теперь мы можем присвоить новый тег этому узлу:
$ maas maas tag update-nodes my-juju-bootstap-node add=node-2349c038-d792-11e3-8df4-0c54a5f0ce34
Атрибут "tag-names" на рисунке 1 перечисляет все теги, назначенные этому узлу, включая новый.
Параметры:
Документация по интерфейсу командной строки MAAS 1.6:
Документация Juju (ограничения)