В программном проекте, в котором я работаю, у нас будет сервер управления и сотни клиентов. Этот сервер управления будет определять политики и отправлять клиентов (или клиенты будут принимать это). Я думаю, что эта структура похожа на групповую политику. Есть ли API или что-то полезное для моей программы на C ++.
Я наткнулся NETCONF названная вещь, но мне не удалось ее запустить. Я подумываю написать свою систему управления конфигурацией с протоколом RPC, если я не могу найти ничего полезного, но не знаю, легко ли это реализовать с помощью C ++.
Или я думаю, что могу использовать веб-сервис для обновления файлов конфигурации клиентов.
Кстати, я не уверен, что назвать эту вещь «диспетчер конфигурации» или нет.
Давайте рассмотрим случай, если ваши конфигурационные файлы огромны. Если у вас есть файл со списком пользователей и вы только что добавили нового, вам не нужно копировать весь файл во все блоки в вашем кластере.
Это было основной причиной, по которой мне пришлось использовать систему контроля версий в качестве такой программы управления конфигами.
Для реализации этого достаточно просто настроить одну из популярных VCS (я использовал Mercurial), поместить конфиги в репозиторий и затем клонировать на клиентские ящики. Если вам нужно обновить конфиги, вы отправляете изменения в VCS и выполняете что-то вроде следующего для каждого клиента / хоста.
ssh -q user@host "cd $VCS_root && hg pull -u"
Если сервер может подключаться к клиентам через SSH, Ansible (http://ansible.cc) может сделать работу. Это инструмент командной строки, но вы должны иметь возможность вызывать его из C ++.
По сути, вы бы создали playbook, который будет запускаться для обновления политик клиентов. Если количество клиентов варьируется и их политики различаются, вы можете поместить эту информацию в «скрипты» динамического инвентаризации: http://ansible.cc/docs/api.html#external-inventory-scripts.
Мы используем этот подход, чтобы вызывать ANS-файлы из веб-приложения Java и данные инвентаризации GET во время выполнения PlayBook из того же веб-приложения (веб-службы RESTful).