Привет, кто-нибудь пробовал интегрировать RouterOS с инструментами вроде Chef, Puppet, Ansible, SaltStack? Не хочу изобретать велосипед, но "приоритетное искусство" найти не получается, кроме, конечно, очевидно мёртвого https://github.com/netmanagers/puppet-mikrotik.
Я бы тоже хотел увидеть что-то подобное, но и я ничего не нашёл. Полагаю, можно использовать playbook для выполнения сырых вызовов RouterOS по SSH, как это делает этот парень с iptables. В противном случае, вероятно, придётся написать модуль для Ansible на Python, чтобы вызывать API RouterOS. Большинство примеров настройки файрвола для Ansible, которые я нашел, ориентированы на настройку iptables на хосте для серверов.
Я сам не программист, но, возможно, изучение python-кода для некоторых существующих модулей firewalld и сетевых модулей Google Compute Engine может стать отправной точкой для тех, у кого есть необходимые навыки, чтобы взяться за это?
Я пытаюсь создать VM на базе RouterOS с помощью Packer, чтобы потом можно было провижинить её другими инструментами. У меня возникла проблема, но как только её решу, это станет хорошей отправной точкой для дальнейшей провижинил с помощью скриптов. В общем, практически все подобные программы умеют загружать файлы по SFTP и выполнять SSH-команды, так что всё сводится к простой команде “import filename”.
РЕДАКТИРОВАНИЕ: Постой… ты пытаешься автоматизировать провижинил на уже существующих реальных роутерах? Тогда забудь всё вышесказанное… Я говорил о другой, похожей, но иной цели. Цель – тестирование изменений, которые в конечном итоге будут развернуты с помощью каких-то инструментов.
Может, немного в сторону от темы, но у меня есть серия скриптов, которые синхронизируют настройки на уровне каждого устройства из центрального роутера или нескольких роутеров. Пишите, если интересно.
Я немного погуглил и, кажется, нашёл кое-что интересное.
Проблема, которую вы описываете, похоже, связана с изменением порядка аргументов в модуле `win_feature`.
Я проверил его исходный код и обнаружил, что параметр `state` принимается как последний аргумент. Это может быть проблемой, если вы хотите использовать `state=absent` в сочетании с другими параметрами, например, `name`.
Я не знаю, что можно сделать с этим сейчас, но, возможно, в будущем, можно будет передавать `state` в любом порядке.
В любом случае, я просто хотел сообщить вам, что, похоже, я нашёл что-то, что может быть связано с вашей проблемой.