我在 vSphere 环境中使用 MaaS,因此我可以模拟大型集群。我已经完成了自动配置 PowerShell 脚本,在其中我可以配置一堆要添加到 MaaS 控制器的虚拟机。我可以在控制器 GUI 中手动添加这些节点,并且能够相应地调试它们。我目前正在尝试弄清楚如何通过 MaaS CLI 添加机器,但我被困在参数上power_parameters
。基于MaaS API 文档,我必须将所有内容添加为key=value
类型。
我遇到的问题是如何在 CLI 中添加该参数。如果我不传递power_parameters
,则会收到此错误:
400 BAD REQUEST
Content-Type: application/json; charset=utf-8
Date: Mon, 25 Mar 2019 21:01:03 GMT
Server: TwistedWeb/16.0.0
Status: 400
Transfer-Encoding: chunked
Vary: Cookie
X-Frame-Options: SAMEORIGIN
{"power_parameters": ["This field is required."]}
但我无法找出该参数的正确字符串格式。我尝试了几种组合:
# tried adding it as a string as the docs say
maas <user> machines create -d \
... \
power_parameters="power_vm_name=<vmname> power_uuid=<vmuuid>"
# tried query string separating
maas <user> machines create -d \
... \
power_parameters="power_vm_name=<vmname>&power_uuid=<vmuuid>"
# tried comma separating
maas <user> machines create -d \
... \
power_parameters=power_vm_name=<vmname>,power_uuid=<vmuuid>
# tried individual parameters
maas <user> machines create -d \
... \
power_vm_name=<vmname> power_uuid=<vmuuid>
我尝试过的每一个排列都会出现这个错误:
400 BAD REQUEST
Content-Type: text/plain; charset=utf-8
Date: Mon, 25 Mar 2019 20:54:24 GMT
Server: TwistedWeb/16.0.0
Status: 400
Transfer-Encoding: chunked
Vary: Cookie
X-Frame-Options: SAMEORIGIN
Failed to parse JSON power_parameters
我知道我可以通过 REST 发送原始 JSON 有效负载,但我并不想在 PowerShell 中为 MaaS 实现 REST 客户端。
power_parameters
在 MaaS CLI 中添加的正确字符串格式是什么?
答案1
因此,我拆开了 MaaS CLI 代码库,并在代码库中看到了很多引用power_parameters_<param>
,这让我相信它正在寻找特定的密钥格式。
这最终为我工作:
maas <user> machines create -d \\
architecture=amd64 \
mac_addresses=<mac> \
domain=<domain> \
hostname=<name> \
power_type=vmware \
power_parameters_power_vm_name=<vm_name> \
power_parameters_power_uuid=<vm_uuid> \
power_parameters_power_address=<vcenter_host_name> \
power_parameters_power_user='<maas_user_in_quotes>' \
power_parameters_power_pass='<password_in_quotes>' \
power_parameters_power_port=443 \
power_parameters_power_protocol=https+unverified
然后我就能在控制器 UI 中看到这台机器了。