Mikrotik и Linux. Рутина и автоматизация

Представлюсь, меня зовут Андрей.

Первоначальная задача стояла такая — создать сотни конфигов для Mikrotik, чтобы поднять на каждом ovpn с сертификатом, затем залить на сотни Mikrotik конфиги, а так же сертификаты и ключ.

Пароль от сертификата у каждого уникален. Создавать сотни конфигов руками бред, да и в друг завтра скажут сделать новые или захочется залить еще какие-то изменения на Mikrotik.

Чего я хотел добиться:

  1. создавать автоматически уйму скриптов;
  2. автоматически отправить их на нужное мне оборудования;
  3. быть уверенным в том, что они отработали без ошибок или узнать о том, что конфиг выполнился не корректно.

image

Используя Bash и FTP все получилось.

Немного теории
В RouterOS можно автоматически выполнять скрипты (ваш файл скрипта должен иметь вид- имя.auto.rsc). После того, как файл будет загружен с помощью FTP на маршрутизатор, он будет автоматически выполнен, как и с командой '/import' (этот метод работает только с FTP).
Как только файл загружен, он автоматически выполняется. Информация об успешности выполнения команд записывается в имя.auto.log

AWK — C-подобный скриптовый язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам (регулярным выражениям). Может использоваться в сценариях командной строки.

Expect — инструмент для автоматизации и тестирования в ОС Unix, написанный Don Libes как расширение к скрипт-языку Tcl, для интерактивных приложений таких, как telnet, ftp, passwd, fsck, rlogin, tip, ssh, и других.


Начнем с того, что я сделал 3 файла:

  1. Файл List.txt в него записал имя OVPN соединений (в моем случает название магазина) и пароль от ключа (разделял табуляцией);
  2. sh1.sh – Баш файл с командой построчного разбора по list.txt + конвейер;
  3. sh2.sh – Баш файл который с помощью Echo и переменных создает файл конфига и записывает в него наши настройки.

И так:

vi list.txt
gamazin1	pass1
gamazin2	pass2
gamazin3	pass3


vi sh1.sh
#!/bin/bash
awk '{print "./sh2.sh "$1 " "$2}' ./list.txt | /bin/bash 
sudo chmod +x sh1.sh

vi sh2.sh
#!/bin/bash
echo /certificate > rsc/$1.auto.rsc
echo import file-name=$1.crt passphrase=$2 >> rsc/$1.auto.rsc
echo import file-name=$1.key passphrase=$2 >> rsc/$1.auto.rsc
echo import file-name=ca.crt passphrase=$2 >> rsc/$1.auto.rsc
echo /interface ovpn-client >> rsc/$1.auto.rsc
echo add certificate=$1.crt_0 connect-to=10.10.10.10 name=$1_ovpn port=1111 user=$1 profile=default auth=sha1 cipher=blowfish128 >> rsc/$1.auto.rsc
#Каждую строчку отдельно пишем начиная с ehco.
sudo ./sh1.sh

Один нюанс!

$1.crt и $1.key их создали заранее по тому же list.txt, из — за этого имя файла так же название магазина.

Создали сотню конфигов. Теперь надо их разослать, используя все тот же AWK и Expect+FTP.

Создаем 4 файла:

  1. Файл list2.txt – в нем мы храним данные Mikrotik IP| Логин | Пароль | Название магазина. Разделял табуляцией.
  2. newsh1.sh – Баш файл с командой построчного разбора по list2.txt + конвейер
  3. newsh2.sh – Отправляет наши пожелания по FTP используя Expect пакет, который отвечает на запросы консоли.
  4. $1.auto.rsc – файл конфиг в моем случае они были созданы от переменной $1, которая являлась названием магазина в предыдущем скрипте. Пример gamazin1.auto.rsc.

vi list2.txt
192.168.1.1 admin   password1	gamazin1
192.168.2.1 admin   password2	gamazin2
192.168.3.1 admin   password3	gamazin3
#Может быть 1 файл list.txt со всей инфой для наглядности их несколько

vi newsh1.sh
#!/bin/bash
awk '{print "./newsh2.sh "$1 " "$2 " "$3 " "$4}' ./list2.txt | /bin/bash

sudo chmod +x newsh1.sh

Sudo apt-get install expect
vi newsh2.sh
#!/bin/bash
Mikrotik=$(expect -c "
    set timeout 3
    spawn ftp $1
    expect \"Name*\"
    send \"$2\n\"
    expect \"?assword:\"
    send \"$3\n\"
    expect \"ftp>\"
    send \"put $4.crt\n\" 
    expect \"ftp>\"
    send \"put $4.key\n\" 
    expect \"ftp>\"
    send \"put ca.crt\n\" 
    expect \"ftp>\"
    send \"put $4.auto.rsc\n\" 
    expect \"ftp>\"
    send \"bye\n\"
")
sudo ./newsh1.sh

Примечание


Сначала мы отправили сертификаты с ключом, а потом только конфиг (если делать в обратной последовательности он начнет ругаться что нет таких сертификатов).

Конфиги и сертификаты разлетелись как горячие пирожки. Из — за названия .auto.rsc по FTP Mikrotik их автоматически прогнал в себе и применились наши настройки.

Мы хотим знать, что везде все супер используя конфигурацию выше меняем 1 строку.

put на get

send \"get $4.auto.log\n\"
#Обратите внимание .log стал а не .rsc
 


Загрузили все файлики домой и прошлись по файлам сортировкой, где 0 байт размер файла у вас проблемы c Mikrotik. По имени файла можно узнать его IP по нашему файлику list2.txt. А в хорошем варианте открыв файл можно увидеть там “Script file loaded and executed successfully”.

Можно написать еще по этим файлам скрипты, но мне хватило сортировать файлы по весу.

Так же я еще один написал скрипт и после всех этих действий который закрывает FTP и наоборот открывает по SSH. Просто изменил FTP на SSH для того, чтобы…

Играемся с FTP
/ip service set ftp disabled=yes
#Это по SSH просто команду отправил
#Затер файл с паролями от ключей 
/file remove $4.auto.rsc 


Я пытался все сразу в 1 конфиг запихать, но file remove в конце команда не давала результата он не мог затереть файл, из которого получал эту команду. Были еще нюансы.

И в итоге… счастье! Можно управлять отдельными списками Mikrotik или всеми сразу, как душе угодно. Теперь, открывая FTP и закрывая можно отправлять команды и быть уверенным что они выполнились. Но мое мнение удобнее FTP, SSH не отвалился на пол пути так как вы будете уверены, что все прошло успешно, посмотрев в папке логи.

В данной статье я показал инструменты, а как использовать их можете придумать сами…
Все делал на Ubuntu 16.04.

Про auto.rsc в Mikrotik
AWK
Expect
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 71

    +7
    похоже вы пытались написать ansible
      –1
      Да, я тоже так думал. Но Ansible не отвечает 3 пункту в данной задаче.
      3.быть уверенным в том, что они отработал без ошибок или узнать о том, что конфиг выполнился не корректно.

      В другом случае, код бы стал слишком загроможденный ямликами, чтобы получить ответ, что все хорошо.
        +2

        ансибл имеет вполне внятную обработку ошибок — это раз, два — у него вменяемые логи выполнения. Поэтому — да, я согласен с osipov_dv
        и, да — фтп не нужен, по идее достаточно API доступа.

          –3
          Научить ямлики, что они на пол пути потеряли половину команд по SSH из-за LTE (2 из 10 команд долетело)- это не ошибка будет.
            +4

            Вы сейчас шутите? По-моему, Вы просто не разобрались как это работает.
            И, да, как будет обеспечиваться дозагрузка файлов по фтп? Если Коннект нестабильный, то он нестабильный вне зависимости от протокола...

          +1
          В конкретном рассматриваемом случае не достаточно ли с помощью того же ansible (routeros_command) посмотреть вывод "/interface ovpn-client print"? Если интерфейс поднялся — значит, всё прошло успешно, нет — тогда уже разбираемся, что конкретно не так.
            +1
            Если 4 или 10 изменений за раз? это уже 400 или 1000 строк лога. А так 1 файл с «Script file loaded and executed successfully». Плюс фишка auto.rsc. если конфиг который отправили с ошибкой, то весь скрипт откатиться и даст лог(не вкрячится в состоянии полтора). Там очень много тонкостей.
              +2

              Этот же файл можно скормить ansible. К тому же, если у вас один универсальный конфиг, за исключением сетевых настроек, то почему вы ожидаете разную реакцию на разных устройствах?

                –1
                auto.rsc работает исключительно по FTP. Разные конфигурации устройств, разная версия RouterOS и тд и тп…
        +2
        sudo chmod +x newsh1.sh
        sudo ./newsh1.sh

        Не сидите под рутом, говорили они, отключайте рута на ссш, говорили они…
          +6

          Согласен. А вместо портянок на баше пишется шаблон на jinja2 и потом к нему применяется шаблонизатор с параметрами. Плюсы — даже не специалист разберётся что там поправить, нет уродливых и ненадежных конструкций с sed/awk, можно обойтись без промежуточных файлов (если кормить выхлоп шаблонизатора через пайп куда угодно). Минусы — надо ставить jinja в систему, но, внезапно, она там обычно есть, вместе с интерпретатором python


          А ещё для пакетной загрузки файлов по фтп except не нужен.


          Уважаемые, коллеги-сетевики! Вместо того, чтобы рожать кадавров — посмотрите вокруг и поспрашивайте знакомых, программистов — как можно решить задачу красивее, эффективнее, надёжнее

            0
            Спасибо за совет.
              0
              нет уродливых и ненадежных конструкций с sed/awk

              ммм, как-то вы радикально…
              пару десятков лет работают скрипты и ничего не глючит
                0

                То что написано — переписывать уже не нужно. Это наше достояние, наследие )


                Но новое — лучше писать на надежном, простом фундаменте. Забор из sed/awk'а в принципе нечитаем, неудобно его поддерживать, а еще нужно понимать, что многие не умеют в один проход подставить значения. Нужно еще держать в голове — in-place редактирование файла или нет. Сложную шаблонизацию на них (с циклами, всякими хитрыми подстановками и пр.) в принципе сделать очень больно. Но… Каждому свое )


                Единственный плюс у sed/awk в том, что это проверенные временем мощные утилиты, которые есть почти везде. Но на этом преимущества и заканчиваются.

                  0
                  Комментировать код и использовать форматирование вы пробовали?
            –4

            Если речь дошла до автоматизации, почему выбран microtik, а не cisco?
            Сколько неговорил с сетеваками один негатив от микротика

              +4
              попробую угадать
              1. цена
              2. цена
              3. функционала микротиков достаточно
                +1
                1. Какая связь между автоматизацией и выбором типа оборудования?
                2. По соотношению цена/качество микротик лучше виски. Да, продукт со своими недостатками. Но задачи выполняет и обходится существенно дешевле. Кому-то нужно 99.99999% и там свои решения, кому-то достаточно 99.99% или даже 99.9% и там микротик уже ничем не хуже.

                p.s. А есть ещё отличная шутка, когда стоит железа на дохриллион долларов, резервные каналы, отдельные вводы и всё такое, дублирующие дизеля,… а потом пара экскаваторов одновременно на удалении в километр+ от датацентра умудряются порвать и основную и резервную оптику, а возможно сразу и резерв резерва порвут… ;)

                0
                Как в целом большая сеть устройств микротика на LTE? Какие дополнительные инструменты используете для управления и мониторинга?
                  +1
                  Работает нормально.
                  Netwatch — очень облегчает жизнь, если модем подвисает то ребутает его скриптом(netwatch функционал Mikrotika). Мониторинг Zabbix написано очень много для него шаблонов.
                    0
                    А вот кстати, не поделитесь статистикой?
                    У меня Микротик с LTE (SXT LTE Kit) ровно один :) И всё не могу понять — 3-4 подвисания LTE-интерфейса в сутки (тем самым netwatch по пропаданию пинга до 1.1.1.1 дёргается скрипт, который делает /interface lte disable lte1, потом /interface lte enable lte1 и шлёт отчёт о содеянном на почту, — ребутать дольше) — это для него нормально? Смотрит в упор на вышку в 650 метрах прямой видимости от себя, так что это не проблемы с качеством сигнала. Или это уже проблема с железом?
                      0
                      И всё не могу понять — 3-4 подвисания LTE-интерфейса в сутки (тем самым netwatch по пропаданию пинга до 1.1.1.1 дёргается скрипт.

                      Какой-то топорный подход. В корне неправильный. Это же беспроводная связь. Потери пакетов там — это нормальная ситуация, а вы, зачем-то, интерфейс перевключаете по этому событию. Какой в этом принципиальный смысл? Он сам заработает, если ему не мешать.
                        0
                        В том-то и дело, что не заработает — там не просто пакеты теряются, а именно что подвисает интерфейс, пока его не рестартануть (или весь девайс не ребутнуть).

                        Собственно, я и начал решать проблему именно обнаружив, что связи с модемом по LTE нет уже пару дней (канал резервный, нужен раз в месяц, отдельно его не мониторил — а тут отвалился основной, а раз — резервного-то тоже нет). Ребутнул — связь появилась тут же. Сначала поставил watchdog, который тупо делает ребут, потом поменял на netwatch, который дёргает кастомный скрипт и рестарт интерфейса без ребута.

                        У netwatch задаётся интервал, в течение которого он пытается достучаться до хоста, прежде чем сделать вывод о его недоступности. Если ставить 5 секунд и более — то это уже точно не обычные потери.
                          +1
                          Вдумайтесь, вы перевключаете интерфейс при пропуске 3 ответов ICMP.

                          Если городить такой огород, то уж лучше по событию registration-status: !registered

                          А ещё лучше обновиться до последней stable.
                          И обновить модем
                          /interface lte firmware-upgrade lte1 upgrade=yes

                          Думаю все проблемы и так уйдут.
                            0
                            За подсказку про обновление модема (RouterOS и так последняя) спасибо, не знал. Обновил, на одну ревизию новее прошивка стала (MikroTik_CP_2.160.000_v013 вместо MikroTik_CP_2.160.000_v012).

                            registration-status, что характерно, при большинстве таких зависаний остаётся registered, и лишь изредка unknown. Но мысль понял, позаписываю вывод "/interface lte info lte1 once" до/после возникновения проблем, попробую поймать, что конкретно является корректным признаком ситуации «вот сейчас точно зависли»

                            P.S. Я не настоящий микротикщик :), эту железку взял просто потому, что в таком форм-факторе и ценовом диапазоне выбора не было. И вот на её примере первый раз в жизни Mikrotik осваиваю. И сильно ругаюсь после Ubiquiti :)
                              +1
                              registration-status, что характерно, при большинстве таких зависаний остаётся registered

                              Я и не удивлен, потому что если модем остается подключен, то он сам заработает, когда оператор восстановит транзит или связь чуть улучшится. Последите тогда ещё за functionality: full

                              И на заметку, если модем реально подвис, то переключение интерфейса ему не поможет, нужно снимать питание:

                              /system routerboard usb power-reset duration=10

                              В вашем случае самое простое это, если уж так хочется использовать netwatch, то делайте проверку после status: down на netwarch, что functionality: !full и registration-status: !registered. И желательно секунд 20-30 спустя. Так как если связь сразу восстановится вы не получаете около минутный перерыв связи на включение и выключение, поиск оператора и регистрацию.
                                0
                                Спасибо, буду анализировать, что оно у меня там в разных ситуациях пишет!
                                Пока ситуация и так устраивала, ибо канал сугубо резервный и шансы, что проблемы с основным каналом и зависание LTE на этом модеме совпадут по времени, крайне невысоки. Главное, чтобы он не зависал надолго и не оказался недоступен ни с какой стороны как раз в тот момент, когда понадобится.
                                Но перфекционизма ради, безусловно, хочется разобраться окончательно и сделать всё правильно.
                              0
                              А ещё лучше обновиться до последней stable.


                              Stable уже не совсем stable. Они в какой то момент всё передвинули и сейчас лучше сидеть на — long-term.
                                0
                                Это очень спорный вопрос. Да, меньше шансов нарваться на баг. Но эти случаи очень редки. Новые функции приходится ждать невыносимо долго, а то и вообще не дождаться. Хотя если они не нужны, то может это и не проблема.

                                Я придерживаюсь следующей стратегии, при выходе новой минорной версии на stable дождаться х.х.1, тогда проблем точно не будет.

                                Один раз, по совету саппорта микротика, пришлось мигрировать на «testing», в связи с проблемами с только что разработанным железом, и долго на ней работал и то ничего не случилось.
                      0
                      Если мониторить по большей части именно Микротики, то можно поставить Dude от них же. И тогда можно хоть удалённые обновления централизованно накатывать.
                      +1

                      Зачем выбрали OpenVPN? Да ещё over TCP (ибо поверх UDP ovpn в микротике не поддерживается). Работать, конечно, будет, но на плохом соединении (как вы сами и писали) инкапсуляция в TCP начнёт совсем всё портить, а вы до кучи рискуете ещё и что-то типа tcp retransmit storm получить, когда из-за потери одного tcp пакета туннеля у вас начнут тормозить и слать горы ретрансмитов все tcp сессии внутри тоннеля.


                      p.s. Да, знаю про 7ю версию с ovpn over udp, но она ещё не production-ready.

                        0
                        Не автор поста, но мнение имею. На LTE имеются неоднократные случаи блокировок стандартных впн, то IPSec внезапно отвалится, то pptp на пару с l2tp одновременно.
                          0

                          А как это относится к вопросу OpenVPN: UDP vs TCP?
                          Просто если так рассуждать, то надо вообще SSTP поднимать )

                            0
                            С каких пор SSTP поддерживает udp?

                            В RouterOS всего два тунельных клиент-серверных протокола, позволяющих задать порт вручную, чтобы обойти блокируемый номер порта на транзите. Другие типы VPN из набора, либо не позволяют поменять порт, либо не позволяют подключатся без двух реальных адресов на концах.

                            Это SSTP(TCP) и OpenVPN(TCP).

                            Так вот SSTP не прокачивает больше 11 Mbit/s на ходовых однопроцессорных моделях и его работа упирается куда-то ещё, кроме как в работу процессора. Куда? Непонятно. OpenVPN не то чтобы далеко ушел, но 20 Mbit/s можно выжать.

                            К слову из-за userspace OpenVPN может грузить только дно ядро, если их больше одного.
                              0

                              Я SSTP упомянул не в ключе UDP, а в ключе "маскировать трафик под легитимный, например, https"
                              Касательно OpenVPN TCP — tcp amplification/pollution или как оно там называется — я в курсе.


                              Другие типы VPN из набора, либо не позволяют поменять порт, либо не позволяют подключатся без двух реальных адресов на концах.

                              Насчет микротика не в курсе, но, во-первых, как минимум, нужен реальный адрес на одном конце (например, IPSec — легко). А вообще — можно туннель и с двумя "серыми" адресами, но там начинаются пляски со всякой дичью типа STUN, т.е. работает будет… далеко не всегда и будет зависимость от фаз луны и положения марса )


                              не прокачивает больше 11 Mbit/s на ходовых однопроцессорных моделях и его работа упирается куда-то ещё, кроме как в работу процессора

                              А часто ли ходовые однопроцессорные модели стоят на канале > 100MBit, а по факту даже — 5-10MBit, учитывая, что для юриков интернет весьма дорогой?

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

                                А вообще — можно туннель и с двумя «серыми» адресами, но там начинаются пляски со всякой дичью типа STUN, т.е. работает будет… далеко не всегда и будет зависимость от фаз луны и положения марса )

                                Есть только единственный вариант, где заработает схема с двумя серыми адресами на концах. Это когда оператор NAT`ит один к одному, серый в белый. И трансляции отрываются как со стороны интернет, так и с внутренней стороны. Это уже не является, образно, серой адресацией, т.к. по факту это обычный реальник. В этом случае будет достаточно воспользоваться встроенным /ip cloud, который среди прочего является ddns клиентом. И по этому доменному имени подключаться. Будет работать без проблем, без всяких бубнов.

                                А часто ли ходовые однопроцессорные модели стоят на канале > 100MBit, а по факту даже — 5-10MBit, учитывая, что для юриков интернет весьма дорогой?

                                Я бы не мешал в одну кучу LTE, с которого началось обсуждение, где совсем другие задачи и каналы не "> 100MBit". И юридических лиц, где реальник и скорости лишь проблема тарификации. В первом случае безраздельно властвует OpenVPN. Во втором случае лучше IPsec ещё ничего не придумали. В большом количестве микротиков есть аппаратная поддержка шифрования. Там можно нагрузить и очень широкие каналы. Гигабит — не предел.
                                  0

                                  Ну, в общем-то я с Вами и не спорю.


                                  Во втором случае лучше IPsec ещё ничего не придумали.

                                  люто и бешено плюсую. А если еще учесть, что из IPsec можно надергать только то, что нужно конкретному заказчику и то, что это по сути стандартная технология для связи всех энтерпрайз железок… то вообще пушка.

                        +1
                        FTP в 2019 году это жесть какая-то. Заходите unattended SSH на Микротик из своего скрипта и конфигурируете все что нужно. И тут же на своём линуксе получите лог с ошибками, в отличии от auto.rsc
                          +1
                          Ну почему?
                          FTP оно говно мамонта конечно, но рядом с микротиком выглядит вполне гармонично.
                          Опять же, со слов автора (я не умею в микроты), применять команды из загруженонго конфига можно только при загрузке этого конфига по FTP. Хотя мне кажется что scp/sftp тоже вполне сгодятся, но я не копенгаген, да.

                          А вот что удивляет в 2019, так это использование expect
                          мне кажется вся та простыня в newsh2.sh (названия скриптов отдельно умиляет) прекрасно заменяется одной строчкой типа:
                          curl -T config1.txt ftp://microtik1 --user=user:pssw -sS || 2>mikrotik1.err


                          Хотя конкретно для этой задачи уместней ансибл. Правда с ансиблом так
                          пару десятков лет работают скрипты и ничего не глючит
                          не получится.
                          Оно слишком быро развивается и многие параметры уходят в deprecated. И зависимость от переменных окружения дикая.
                          С expect тоже не получится. Не обманывайте себя. Любой скринскрэйпинг — зло. Нельзя на нем автоматизацию строить
                            –1
                            Ansible не подходит, потому что можно роутер в состоянии полтора загнать. Половина команд выполнилась, половина с ошибками не выполнилась из за разных версий ПО и оборудования. А конфиг по FTP с расширением auto.rsc. нужен для того чтобы если в конфиге есть ошибка, Mikrotik откинет все изменения которые были в файле сам, так еще и лог даст в файле.
                            curl -T config1.txt microtik1 --user=user:pssw -sS || 2>mikrotik1.err
                            Спасибо буду знать.
                              0
                              Ансибл, внезапно, тоже умеет в FTP: net_put ansible module
                                0
                                Где FTP? Не вижу. Вижу SFTP в ссылке и SCP. В документации Mikrotik auto.rsc поддерживает FTP.
                                В RouterOS можно автоматически выполнять скрипты (ваш файл скрипта должен иметь вид- имя.auto.rsc). После того, как файл будет загружен с помощью FTP на маршрутизатор, он будет автоматически выполнен, как и с командой '/import' (этот метод работает только с FTP).
                                  +1
                                  Ну я, надеюсь, для Вас не составит труда обойти это ограничение?
                                  Опять же, повторюсь, с микротиками не знаком, пожтому не сильно минусуйте есличто, но что мешает выполнить ваш скрипт после загрузки на устройстве отдельной командой:
                                  /import file-name=имя.auto.rsc

                                  ну т.е. ансибл сценарий грубо такой:

                                   tasks:
                                      - name: config upload
                                        net_put:
                                          src: {{ cfg_filename }}
                                          protocol: sftp
                                      - name: apply config
                                        routeros_command:
                                          commands: /import {{ cfg_filename }}
                                    –2
                                    И файла имя.auto.log вы не получите с тем что у вас проблема или все хорошо отработало.
                                      +2
                                      Да что ж ты такой деревянный?
                                       - name: apply config
                                            routeros_command:
                                              commands: /import {{ cfg_filename }}
                                            register: res
                                       - name: log errors
                                            debug: var=res.stderr
                                      
                                    0

                                    Ftp по умолчанию не безопасен. Пароль перехватить — раз-два.
                                    Может sftp или ftps, всё-таки ?

                                      0
                                      Все идет через ovpn канал с сертификатами ид и тп. И я бы с радостью но увы не поддерживает auto.rsc ничего кроме FTP.
                                        0

                                        Ага. Вы же сами пишете, что мутили весь этот огород, чтобы настроить на микротиках овпн.


                                        оздать сотни конфигов для Mikrotik, чтобы поднять на каждом ovpn с сертификатом

                                        типичная проблема курицы и яйца. Как залить файл по FTP безопасно, если VPN еще нет.

                                  +1
                                  Поведение ansible можно закодировать на основании полученных данных о версии ПО и оборудования (модуль routeros_facts)
                                  +1
                                  >Ну почему?
                                  Вот потому что вы и написали. FTP в скриптах нужен нелепый expect, Микротик поддерживает scp/sftp, FTP небезопасный в конце концов.
                                    –1
                                    В RouterOS можно автоматически выполнять скрипты (ваш файл скрипта должен иметь вид- имя.auto.rsc). После того, как файл будет загружен с помощью FTP на маршрутизатор, он будет автоматически выполнен, как и с командой '/import' (этот метод работает только с FTP).
                                    Как только файл загружен, он автоматически выполняется. Информация об успешности выполнения команд записывается в имя.auto.log
                                    Моя не знать как вам еще объяснить.
                                    FTP небезопасный в конце концов.
                                    А если все в ovpn завернуто с сертификатами? Или вы в серьезе думаете по FTP в интернете кидать это?
                                      +1

                                      На любом роутере есть ssh, по нему можно и файлы заливать и команды исполнять. FTP лишняя бессмысленная сущность.

                                        +1
                                        каким образом все завернуто в ovpn? Согласно статье вы его только настраиваете?!
                                        +1
                                        Да, проверил, подтверждаю. При upload`е по scp и sftp скрипт не запускается автоматически на последнем stable.
                                          +1

                                          Этот функционал не прикручивают к sftp просто потому что он никому не нужен. Вы сами можете запустить скрипт сразу после аплоада и проверить не пропало ли соединение. Просто добавив команд на три строки.

                                            –2
                                            Это не используется для 1 Mikrotik, их ЛЕГИОН, в каждый заходить и проверять по 10 изменений. А тут сразу файлик с логом.
                                              0

                                              Автоматизация затем и нужна, чтобы не проверять руками изменения… А если изменения проверяются автоматикой, то там же можно сделать роллбек и прочие интересные штуки. Ваша позиция непонятна.

                                                +1
                                                Если у вас RouterOS 1.х остаётся только посочувствовать. А сейчас другие времена и другие best practices. Лог и сообщения об ошибках можно получить сразу в скрипте на линуксе, обработав вывод команд ssh. Это я ещё не говорю про микротиковский API, который вообще-то тоже имеется.
                                                0
                                                del
                                                –1

                                                Баг-репорт, надеюсь, отправили ?

                                                  +2
                                                  Automatic Import

                                                  In RouterOS it is possible to automatically execute scripts — your script file has to be named anything.auto.rsc — once this file is uploaded using FTP to the router, it will automatically be executed, just like with the '/import' command. This method only works with FTP.

                                                  Once the file is uploaded, it is automatically executed. Information about the success of the commands that were executed is written to anything.auto.log


                                                  Тут описан механизм.
                                                  Вряд ли у меня есть шансы.
                                                    0

                                                    Знаете, что меня смущает… Выглядит как крутая штука, когда реально нет никаких других возможностей настроить микротик, есть проблемы со стабильностью канала и пр. (я сам в первую очередь поклонник максимально надежных процессов), но вот интересно — если был обрыв связи по FTP, то может ли микротик случайно запустить половинчатый auto.rsc файл? А если их несколько качается в одном сеансе связи? Наверняка разработчики задумывались об этом (хотя не факт — ту же имплементацию OpenVPN over UDP их умоляли ГОДЫ реализовать, а совместимость IPIP-IpSec у микротика с другими корпорат.железками не на уровне 100%, тот же strongswan более надежен), но вот в доке ответа я при беглом просмотре не нашел.
                                                    Ну, и я не понимаю, чем хуже двухшаговый вариант (загрузка скрипта + /import) по сравнению с автостартом скрипта после загрузки.

                                                      +1
                                                      Как по мне просто надо учитывать специфику. Если среда доверенная, например есть managment vlan или шифрованный туннель, то можно рассылать как угодно и даже через FTP. А если не доверенная, то там, естественно, нужно залить либо двумя шагами, сначала sftp/scp, а потом /import по ssh. Либо любым другим шифрованным механизмом.

                                                      Я никогда таким способом не пользовался, т.к. в dude есть намного более мощный и бесплатный механизм для работы с конфигурациями. Взять хотя бы очень интересную опцию как работу с оборудованием не доступным по l2/l3 от точки управления, но вполне доступным через цепочку mikrotik`ов и им мы через dude можем отправить команды или считывать телеметрию. Можно нечто подобное реализовать на ansible?
                                                      +1
                                                      Тут не написано что автоматическое выполнение скрипта чем то отличается от /import something.rsc, за исключением записи статуса в лог. Где тут про откат конфигурации в случае ошибки в скрипте и тп?
                                                        +2
                                                        Написал в поддержку. Посмотрим, что ответят.
                                                        1) Why auto import * .auto.rsc works just under FTP protocol and not work for sftp / scp.
                                                        2) Is there any plans for deploy sftp / scp auto import?
                                                        3) Is there some mechanism for handle upload errors like session disconnect and * .auto.rsc is not upload completely?
                                                        4) Is there some mechanism for error handling content of * .auto.rsc in case of some wrong syntacsis.

                                                        По факту несколько часов назад выкатили stable 6.46.1. Там есть пункт:
                                                        *) system — fixed "*.auto.rsc" file execution (introduced in v6.46);

                                                        Так вот я обновился, проверил, scp/sftp auto import все ещё не работают.
                                                          0
                                                          Интересную идею развили.
                                                            +1
                                                            Выходит это не подкрепленные домыслы автора?
                                                            Плюс фишка auto.rsc. если конфиг который отправили с ошибкой, то весь скрипт откатиться и даст лог(не вкрячится в состоянии полтора). Там очень много тонкостей.


                                                            В первом же комментарии указали на то что, сейчас целесообразно сразу начинать использовать современные инструменты. Инфраструктура как код ( ansible + git) это действительно правильный, современный подход. А то что показал в статье автор, похвально, но я извиняюсь, так делали 15 — 20 лет назад, когда не было никаких инструментов автоматизации, и каждый админ, на своих коленках писал как мог. Сейчас на это нет смысла тратить время.
                                                            Автору — попробуйте все таки ansible, вам понравится.
                                                              +1
                                                              SFTP was already working for a while but got broken in latest RouterOS versions. v6.47beta upcoming releases will contain a fix for the problem.

                                                              Best regards,
                                                              Mārtiņš S.

                                                              Скудненький ответ. Но хоть что-то. Будет значит нам sftp. Просто со временем.
                                                          0
                                                  0
                                                  Автору — попробуйте все таки ansible, вам понравится.

                                                  начать можно отсюда mum.mikrotik.com/presentations/RU16/presentation_3841_1476092869.pdf
                                                    0

                                                    Написал как делаю примерно то же самое чуть более современными средствами
                                                    https://m.habr.com/en/post/482194/

                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                    Самое читаемое