Форман назначает несколько хостов в группу конфигурации

На foreman 1.6.0 можно легко назначить несколько хостов в группу конфигурации (в меню Configure->Puppet->Config Groups)?

Я довольно хорошо осмотрел веб-интерфейс и все, но не могу найти ничего.

1 ответ

Решение

Для этого нет способа с графическим интерфейсом, хотя вы можете назначить группы конфигурации группе хостов и назначить для нее несколько хостов через список хостов (Хосты> Все хосты, флажки, выберите Действие> Изменить группу).

Вы правы в том, что нам не хватает поддержки групп конфигурации в 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]}}

Итак, сложив это вместе, вы можете сделать что-то вроде

для h в a.example.com b.example.com c.example.com; делать
  curl -k -u admin: пароль -H 'Тип содержимого: приложение /json' -X PUT \
    -d '{"host":{"config_group_names":["Base", "Web server"]}}' \
    https:// локальный / апи /v2/ хостов /${г}
сделанный
Другие вопросы по тегам