Можно ли в Foreman 1.6.0 легко назначить несколько хостов группе конфигурации (в меню Configure-> Puppet-> Config Groups)?
Я довольно хорошо ознакомился с веб-интерфейсом и молотком, но, похоже, ничего не нашел.
Не существует способа сделать это с помощью графического интерфейса пользователя, хотя вы можете назначить группы конфигурации для группы хостов и назначить несколько хостов для них через список хостов (Хосты> Все хосты, флажки, Выбрать действие> Изменить группу).
Вы правы в том, что нам также не хватает поддержки групп конфигурации в CLI, что меня удивило. Я подал # 7520 чтобы исправить это.
Вероятно, лучший способ сейчас - через REST API. Вот пример обновления только одного хоста, но, очевидно, вы можете поместить это в простой цикл оболочки и сделать с ним гораздо больше.
(Мне нравится направлять вывод curl через json_reformat, это очень удобно, если он у вас установлен.)
Сначала вы можете получить список групп конфигурации или сделать это через графический интерфейс:
$ 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": [
]
}
]
Вы также можете использовать идентификаторы:
{"host":{"config_group_ids":[2, 3, 5, 7]}}
Итак, собрав это вместе, вы могли бы сделать что-то вроде:
for h in a.example.com b.example.com c.example.com; do curl -k -u admin:password -H 'Content-Type: application/json' -X PUT \ -d '{"host":{"config_group_names":["Base", "Web server"]}}' \ https://localhost/api/v2/hosts/${h} done