无法使用 Foreman API 创建新主机 - 缺少整理模板

无法使用 Foreman API 创建新主机 - 缺少整理模板

我希望这是服务器故障……

我正在尝试使用 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“嘿!我安装完成了 :)”

以下是您要查找的内容:

OS完成模板选择

如果您没有看到任何完成模板,请转到主机 > 配置模板,查找“Kickstart 默认完成”并将其与 CentOS 6.7 关联。之后您应该能够设置它。您应该看到以下内容:

与操作系统关联的配置模板


一旦你的操作系统有与之关联的完成模板,它应该就能很好地解决。如果在这种情况下它找不到完成模板,请确保你提供了正确的操作系统选项。

答案2

回到这个问题,我最终将这个问题归结为权限问题。也就是说,我发布的有效负载不会正确创建主机,因为它实际上有些错误。但是,如果您使用管理员用户调用 API(或使用 hammer),我发布的错误就会消失。

相关内容