Foreman

無法使用 Foreman API 創建新主機 - 缺少整理模板

  • February 28, 2016

我希望這屬於伺服器故障…

我正在嘗試使用工頭 API 創建主機(使用錘子,但發布主機有效負載會給我相同的結果)。每次,它都會抱怨我缺少整理模板。

來自 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"
   ]
}

只是回到這一點,我最終將問題解決為權限問題。也就是說,我發布的有效負載不會正確創建主機,因為它實際上有些錯誤。但是,如果您使用管理員使用者呼叫 API(或使用錘子),我發布的錯誤就會消失。

這裡的問題是您使用的作業系統沒有與之關聯的完成模板。這不是您在創建主機時必須做的事情,而是在創建作業系統時要做的事情。

轉到主機 > 作業系統 > CentOS 6.7,然後從那裡的列表中選擇一個完成模板。如果你沒有,我建議選擇 Kickstart 完成。它所做的只是安裝 Puppet 並告訴 Foreman ‘嘿!我完成了安裝:)’

這是您要查找的內容:

作業系統完成模板選擇

如果您沒有看到任何完成模板,請轉到主機 > 配置模板,查找“Kickstart 預設完成”並將其與 CentOS 6.7 關聯。之後,您應該可以設置它。這是你應該看到的:

與作業系統關聯的供應模板


一旦你的作業系統有一個與之關聯的完成模板,它應該可以很好地解決。如果即使在這種情況下也找不到完成模板,請確保您提供了正確的作業系統選項。

引用自:https://serverfault.com/questions/758769