本文作者是 Canonical 现场工程师 Mark Wenning。
MAAS 根据节点的物理属性实现标记系统。关于标记的 MAAS 文档主要从使用现有硬件标记和 –constraints 的描述选项的角度对此进行了讨论。
还可以手动创建新标记,以便更轻松地部署和管理 MAAS 和 Juju 群集。
例如,如果要在 MAAS 群集上引导 Juju 并强制引导节点位于特定机器上,则可以先标记节点,然后使用标记作为约束进行引导。
$ 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 cli 环境,请运行
$ maas logout maas
如有关标记的 MAAS 文档中所述,可以使用 XPath 表达式基于与节点关联的“lshw”信息(格式化为 XML)创建和分配标记。 您可以通过单击“原始发现数据”下的“显示发现的详细信息”链接,在每个节点网页的底部访问此信息。 我的一个节点的部分“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、系统、台式机、笔记本电脑、Rack_Mount、多系统、64 位和/或 32 位来标记符合要求的节点,并且也会应用于稍后添加的任何节点。
使用 MAAS cli 命令创建新的原始标记
$ maas <profile> tag new name="<tag-name>" [comment="<comment>"]
请注意,我们未在此处使用描述选项。 所以:
$ maas maas tag new name="my-juju-node" comment="my new juju node"
可以手动将此标记分配给系统中的一个或多个节点。
要将标记分配给一个或多个节点,请运行以下命令:
$ maas <profile> tag update-nodes <raw-tag-name> add="<system-id>"
如何查找节点的系统 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”:“node-2349c038-d792-11e3-8df4-0c54a5f0ce34”
现在,我们可以将新标记分配给此节点:
$ maas maas tag update-nodes my-juju-bootstap-node add=node-2349c038-d792-11e3-8df4-0c54a5f0ce34
图 1 中的“tag-names”属性列出了分配给此节点的所有标记,包括新标记。
选项包括:
命令行界面 MAAS 1.6 文档:
Juju 文档(约束)