我希望这是服务器故障……
我正在尝试使用 foreman API 创建主机(使用 hammer,但 POST 主机负载会给出相同的结果)。每次,它都会抱怨我缺少完成模板。
API 发出的错误消息如下:未找到此主机的完成模板,请确保在 CentOS 6.7 设置中至少定义一个
通过 Foreman API 创建主机时如何指定完成模板?
文档中没有告诉我如何在创建主机时提供完成模板选择。在 Foreman UI 中使用相同设置执行此操作即可。当我单击配置模板部分中的“解决”时,我也可以看到我的完成模板。
一些细节:这是针对 VMWare 集群的 Foreman 1.10.1
这是我的主机有效载荷
"host" => {
"name" => "ez-apitesthost",
"location_id" => 1,
"organization_id" => 5,
"environment_id" => 9,
"architecture_id" => 1,
"operatingsystem_id" => 2,
"compute_resource_id" => 2,
"root_pass" => "password",
"hostgroup_id" => 73,
"image_id" => 19,
"build" => true,
"enabled" => true,
"provision_method" => "image",
"managed" => true,
"compute_profile_id" => 11,
"compute_attributes" => {
"cpus" => "1",
"corespersocket" => "2",
"memory_mb" => "4096",
"cluster" => "MYCLUSTER01",
"path" => "/Datacenters/MYDC/vm",
"guest_id" => "centos64Guest",
"scsi_controller-type" => "ParaVirtualSCSIController"
"volumes_attributes" => {
"0" => {
"datastore" => "dc_sata_01"
}
}
},
"owner_id" => "75",
"overwrite" => true,
"host_parameters_attributes" => {},
"interfaces_attributes" => {
"0" => {
"type" => "interface",
"name" => "ez-apitesthost",
"domain_id" => "1",
"subnet_id" => "2",
"managed" => "false",
"primary" => "true",
"provision" => "true",
"compute_attributes" => {
"type" => "VirtualVmxnet3",
"network" => "internal vlan"
}
}
}
}
以下是回复
{
"error" => {
"id" => nil,
"errors" => {
"base" => [
[0] "No finish templates were found for this host, make sure you define at least one in your CentOS 6.7 settings"
],
"conflict" => [],
"interfaces.conflict" => []
},
"full_messages" => [
[0] "No finish templates were found for this host, make sure you define at least one in your CentOS 6.7 settings"
]
}
答案1
问题在于您使用的操作系统没有与之关联的完成模板。这不是您在创建主机时必须做的事情,而是在创建操作系统时必须做的事情。
转到主机 > 操作系统 > CentOS 6.7,然后从其中的列表中选择一个完成模板。如果您没有,我建议您选择 Kickstart finish。它的作用只是安装 Puppet 并告诉 Foreman“嘿!我安装完成了 :)”
以下是您要查找的内容:
如果您没有看到任何完成模板,请转到主机 > 配置模板,查找“Kickstart 默认完成”并将其与 CentOS 6.7 关联。之后您应该能够设置它。您应该看到以下内容:
一旦你的操作系统有与之关联的完成模板,它应该就能很好地解决。如果在这种情况下它找不到完成模板,请确保你提供了正确的操作系统选项。
答案2
回到这个问题,我最终将这个问题归结为权限问题。也就是说,我发布的有效负载不会正确创建主机,因为它实际上有些错误。但是,如果您使用管理员用户调用 API(或使用 hammer),我发布的错误就会消失。