MaaS CLI 中 VMware 的电源参数

MaaS CLI 中 VMware 的电源参数

我在 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 中看到这台机器了。

相关内容