在 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} 完毕