Назад | Перейти на главную страницу

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

Можно ли в 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