foreman 将多个主机分配给一个配置组

foreman 将多个主机分配给一个配置组

在 foreman 1.6.0 上,是否可以轻松地将多个主机分配给一个配置组(在配置->Puppet->配置组菜单下)?

我仔细查看了 Web 界面和 hammer cli,但似乎没有发现任何东西。

答案1

没有通过 GUI 方式执行此操作,但您可以将配置组分配给主机组并通过主机列表(主机 > 所有主机、复选框、选择操作 > 更改组)向其分配多个主机。

您说得对,CLI 中也缺少配置组支持,这让我很惊讶。我已经提交了#7520来修复这个问题。

目前最好的方法可能是通过 REST API。下面是一个仅更新一个主机的示例,但显然您可以将其放在一个简单的 shell 循环中,并用它做更多的事情。

(我喜欢通过 json_reformat 来传输 curl 输出,如果您安装了它,会非常方便。)

首先,您可能想要获取配置组列表,或者通过 GUI 进行获取:

$ curl -k -u admin:password https://localhost/api/v2/config_groups

现在您可以获取单个主机并查看已分配哪些配置组:

$ curl -k -u admin:password https://localhost/api/v2/hosts/foreman.example.com
...
"config_groups": [
]

所以现在那里什么都没有。

在这里,我用一个名称数组(在本例中为“test”)更新主机的关联配置组:

$ curl -k -u admin:password -H 'Content-Type: application/json' -d '{"host":{"config_group_names":["test"]}}' -X PUT https://localhost/api/v2/hosts/foreman.example.com
$ curl -k -u admin:password https://localhost/api/v2/hosts/foreman.example.com
...
"config_groups": [
    {
        "id": 1,
        "name": "test",
        "created_at": "2014-09-18T10:34:58Z",
        "updated_at": "2014-09-18T10:52:39Z",
        "puppetclasses": [

        ]
    }
]

您还可以使用 ID:

{"host":{"config_group_ids":[2, 3, 5, 7]}}

综合起来,你可以做如下的事情:

对于 a.example.com b.example.com c.example.com 中的 h;执行
  curl -k -u 管理员:密码 -H'内容类型:application/json'-X PUT \
    -d '{"host":{"config_group_names":["Base", "Web 服务器"]}}' \
    https://localhost/api/v2/hosts/${h}
完毕

相关内容