Цю статтю написав Марк Веннінг, канонічний польовий інженер.
MAAS реалізує систему тегів, засновану на фізичних властивостях вузлів. Документація MAAS щодо тегів обговорює це, в основному з точки зору використання існуючих апаратних тегів з опцією опису для –обмежень.
Нові теги також можна створювати вручну, щоб спростити розгортання та керування кластерами MAAS та Juju.
Наприклад, якщо ви хочете завантажити Juju на кластері MAAS і змусити вузол початкового завантаження бути на певній машині, ви можете спочатку позначити вузол, а потім почати завантаження, використовуючи тег як обмеження.
$ juju bootstrap --constraints "tags=my-juju-bootstrap-node" –debug
Зверніть увагу, що як тільки ви встановите обмеження тегу, як це, слідування командам дзюджу буде намагатися використовувати обмеження, поки ви його не скасуєте:
$ 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-розрядні, а також застосовуються до будь-яких вузлів, які будуть додані пізніше.
Новий необроблений тег створюється за допомогою команди cli MAAS
$ 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": "Вузол-2349C038-D792-11E3-8DF4-0C54A5F0CE34"
Тепер ми можемо призначити новий тег цьому вузлу:
$ maas maas tag update-nodes my-juju-bootstap-node add=node-2349c038-d792-11e3-8df4-0c54a5f0ce34
Атрибут "назва-тегів" на рисунку 1 перелічує всі теги, присвоєні цьому вузлу, включаючи новий.
Параметри:
Документація інтерфейсу командного рядка MAAS 1.6:
Документація Juju (обмеження)