API или библиотека для управления конфигурацией сервер-клиент

В программном проекте, в котором я работаю, у нас будет сервер управления и сотни клиентов. Этот сервер управления будет определять политики и отправлять клиентов (или клиенты будут принимать это). Я думаю, что эта структура похожа на групповую политику. Есть ли API или что-то полезное для моей программы на C ++.

Я наткнулся NETCONF названная вещь, но мне не удалось ее запустить. Я подумываю написать свою систему управления конфигурацией с протоколом RPC, если я не могу найти ничего полезного, но не знаю, легко ли это реализовать с помощью C ++.

Или я думаю, что могу использовать веб-сервис для обновления файлов конфигурации клиентов.

Кстати, я не уверен, что назвать эту вещь «диспетчер конфигурации» или нет.

1

Решение

Давайте рассмотрим случай, если ваши конфигурационные файлы огромны. Если у вас есть файл со списком пользователей и вы только что добавили нового, вам не нужно копировать весь файл во все блоки в вашем кластере.
Это было основной причиной, по которой мне пришлось использовать систему контроля версий в качестве такой программы управления конфигами.

Для реализации этого достаточно просто настроить одну из популярных VCS (я использовал Mercurial), поместить конфиги в репозиторий и затем клонировать на клиентские ящики. Если вам нужно обновить конфиги, вы отправляете изменения в VCS и выполняете что-то вроде следующего для каждого клиента / хоста.

ssh -q user@host "cd $VCS_root && hg pull -u"
3

Другие решения

Если сервер может подключаться к клиентам через SSH, Ansible (http://ansible.cc) может сделать работу. Это инструмент командной строки, но вы должны иметь возможность вызывать его из C ++.

По сути, вы бы создали playbook, который будет запускаться для обновления политик клиентов. Если количество клиентов варьируется и их политики различаются, вы можете поместить эту информацию в «скрипты» динамического инвентаризации: http://ansible.cc/docs/api.html#external-inventory-scripts.

Мы используем этот подход, чтобы вызывать ANS-файлы из веб-приложения Java и данные инвентаризации GET во время выполнения PlayBook из того же веб-приложения (веб-службы RESTful).

0

По вопросам рекламы [email protected]