MAAS:如何从一台机器导入存储布局并将其导出到其他节点?

MAAS:如何从一台机器导入存储布局并将其导出到其他节点?

我想自定义 MAAS 上多台机器的磁盘分区布局。我知道使用 UI 的方法是 1) 将“存储布局”更改为“无存储(空白)布局”,然后 2) 单击“添加分区...”以添加自定义分区。

有没有办法从一台机器导入存储布局并将其导出到其他节点,最好通过 CLI(或 API)?

更新时间:5/2 14:00

我读过如何管理分区,现在我可以通过以下命令创建自定义分区。我已经接近我想要实现的目标了,但这还不够完美。

maas admin partitions create <node_id> <device_id> size=512000000
maas admin partition format <node_id> <device_id> <partition_id> fstype=fat32
maas admin partition mount <node_id> <device_id> <partition_id> mount_point=/boot/efi
maas admin partitions create <node_id> <device_id> size=100000000000
maas admin partition format <node_id> <device_id> <partition_id> fstype=ext4
maas admin partition mount <node_id> <device_id> <partition_id> mount_point=/
maas admin partitions create dkrymn 56 size=<remaining_size>

我很感激任何反馈。谢谢!

更新时间 5/2 15:15

我最终编写了一个满足我需求的 bash 脚本。我已将其作为答案写在下面。

答案1

我(自己)最终创建了一个如下所示的 bash 脚本,它足以满足我目前的需求。

如果有人知道更好/更聪明的方法,请评论。谢谢!

#!/bin/bash
#
# maas_partitions_type_a.sh - deletes existing partitions and 
# create partitons for type A machines.
#

if [ $# -ne 1 ]; then
    echo "./maas_partitions_type_a.sh <hostname>"
    exit 1
fi

MAAS_API_URL=https://my_maas.example.com:5240/MAAS/api/2.0
maas login admin $MAAS_API_URL $(cat ~/.config/maas/api-key)

: Get HOSTNAME, SYSTEM_ID, and DEVICE_ID
HOSTNAME=$1
SYSTEM_ID=$(maas admin machines read hostname=$HOSTNAME | jq '.[].system_id')
SYSTEM_ID=${SYSTEM_ID//'"'}
DEVICE_ID=$(maas admin block-devices read $SYSTEM_ID | jq '.[].id')

: Clean up existing partitions
# (Extra CAUTION: This will wipe out all partitions)
maas admin partitions read $SYSTEM_ID $DEVICE_ID | jq '.[].id' | while read part_id; do
    maas admin partition delete $SYSTEM_ID $DEVICE_ID $part_id
done

: 512MB for /boot/efi with fat32
PART_ID=$(maas admin partitions create $SYSTEM_ID $DEVICE_ID size=512000000| jq '.id')
maas admin partition format $SYSTEM_ID $DEVICE_ID $PART_ID fstype=fat32
maas admin partition mount $SYSTEM_ID $DEVICE_ID $PART_ID mount_point=/boot/efi

: 300GB for / with ext4
PART_ID=$(maas admin partitions create $SYSTEM_ID $DEVICE_ID size=300000000000| jq '.id')
maas admin partition format $SYSTEM_ID $DEVICE_ID $PART_ID fstype=ext4
maas admin partition mount $SYSTEM_ID $DEVICE_ID $PART_ID mount_point=/

: Remaining
maas admin partitions create $SYSTEM_ID $DEVICE_ID size=659680000000

不要太大胆,但你可以简单地在 for 循环中运行此脚本,如下所示:

for node in node{01..32}; do
  ./maas_partitions_type_a.sh $node
done

相关内容