Pull to refresh

Comments 24

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

Спасибо за статью.

Касательно критики — не очень удачная функция diff_mail, лучше используйте какие-нибудь модули для отправки почты, скажем, Mime::Lite или Mime::Entity.

Также не понял зачем вы с каталистов забираете конфиг как show run, а не show startup-config.
Ну и конечно лучшим, на мой взгляд решением, было бы хранить конфиги на tftp сервере, и в svn забирать их уже оттуда. Это и проще с точки зрения скрипта (меньше ошибок при работе с файловой системой, нежели с сетевыми устройствами, не будет таких исключительных ситуаций, как устройство недоступно, конфиг содержит левые строчки и тп).

Спасибо за советы. Модули обязательно изучу и постараюсь применить.
Касательно sh run — sh start — просто задача забирать именно текущий рабочий конфиг. Как показала практика: если кто-нибудь из инженеров забывал сохранять конфигурацию(бывало и такое), то после непредвиденной перезагрузки устройства у всех в почте было видно, что конфигурация изменилась (т.к. startup отличался от run ) и конфигурация приводилось в нормальное состояние до того как пользователи, которых это коснулось, успевали замечать.
Изначально, я как раз и хотел сделать без логина на свичи, а, например с Cisco, по snmp просить ее слить свой конфиг по tftp. Но при таком подходе я не могу отследить процесс скачавания конфига. И ингода выходило, что скрипт пытается сравнить еще недокачанный конфиг. Синхронизировать этот процесс я не придумал как.
а если конфиг был сделан криво, что привело к частичной неработоспособности железки, а система его подобрала?.. иногда быстрее залить бэкап, а он кривой
Заливаем предыдущую ривизию. Конфиг же не затерается поверх новым, а хранится вся история изменений, соответственно мы можем откатиться до любой даты.
Сразу могу сказать что забор конфигов по tftp не лучшая идея, потому как tftp протокол не самый хороший выбор на длинном канале с ошибками. У меня на этом протоколе на моих скриптах были конфиги, которые категорически недокачивались.

Я выбрал протокол ftp. Почему не scp? Потому что из-за какой-то, уже не помню какой баги, scp на базе sshv2 с циски не ходили. Надо на цисках всех было включать ssh v1.

А еще подводный камень, в ios в окрестности 12.4.20T ошибка, такая, чтобы ftp не работает.

В итоге в моем скрипте сначала идет попытка передачи конфига по ftp, если проблема, переключаемся на scp. А я уж позаботился о том, что на хостах с проблемой в ftp стоял ssh v1.

И еще, Net::Appliance::Session у меня на FreeBSD не заработал, как и все прочее SSH из под perl-а. Удивительно хорошо и надежно работает Net::Telnet::Cisco, но канал не защищенный, не подходит.

В итоге свои скрипты я написал на базе Expect-a.

Можно было еще использовать snmp для скидывания конфига (чтобы не лезть на консоль), но Cisco ASA не позволяет этого, а ASA мне была важна.

Вот такие небольшие заметки.
Обратите внимание на rancid, а еще лучше на Notch и co.
UFO just landed and posted this here
Опять велосипеды :)))

www.nocproject.org

redmine.nocproject.org/wiki/noc/Configuration_Management

Configuration Management Configuration Management deals with network equipment and services configuration.
Primary tasks are:
Router/switches config backup
Store configs under version control system
Maintain a full history of configuration changes
Provide web access to configs with rich set of analytic tools
Restore part or full config to device in case of failure or staff mistake
To ease equipment replacement
Network services configs are stored too, including DNS Zones
Ничего плохого в таких «велосипедах» нет. Именно на них «молодняк» набирается опыта, «набивает руку», и изучает новые(для себя) технологии. И к тому же, если была поставлена задача «просто собирать конфиги», без дополнительных функций, то данный скрипт выполняет её в совершенстве. А внедрять мощную многофункциональную систему вроде «NOC Project», для данной задачи, это все равно что «покупать газель для перевозки ящика пива», не помню где, но натыкался на термин «информационное потреблядство» который очень хорошо подходит к данной ситуации.

Сам не так давно реализовывал подобное, а началось все как раз с того что руководство решило внедрять Cisco LMS. После подробного анализа пришли к выводу, что кроме бэкапа конфигов нам пока ничего не надо. Скрипт собирающий конфиги через SNMP был написан буквально за один день. В результате потребности удовлетворены, и организация сэкономила чуть меньше миллиона.

P.S. Автору респект, сам давно хотел допилить свое «творение» для работы с SVN, но руки пока не доходят.
Это где вы «совершенство» увидели? То что поддерживается несколько несчастных железок? ;)

Плохо делать велосипеды, плохо.

Вместо того чтобы писать нужные модули к тому же NOC или чему-то подобному (и заодно изучать как правильно программировать / писать такие системы), люди учатся делать кривые поделки, которые (вот это уже реально опасно) потом экcплуатируются промышленно и на которые все надеются в критических ситуациях.

Это где вы «совершенство» увидели? То что поддерживается несколько несчастных железок? ;)

В сравнении с моей «поделкой» которая просто два раза вдень раскидывает всем коммутаторам snmp- команду скинуть конфиг, этот скрипт гораздо лутше. Если вы про реализацию, то думаю «отшлифует» когда- нибудь, возможно, если руки дойдут:)

Вместо того чтобы писать нужные модули к тому же NOC или чему-то подобному (и заодно изучать как правильно программировать / писать такие системы), люди учатся делать кривые поделки, которые (вот это уже реально опасно) потом экcплуатируются промышленно и на которые все надеются в критических ситуациях.


внедрять мощную многофункциональную систему вроде «NOC Project», для данной задачи, это все равно что «покупать газель для перевозки ящика пива»

ну да, ну да.

а если вам надо маленький сервер сделать — то напишете свою ОС, ибо ставить линукс — это как покупать газель, да?

все «внедрение» NOC'а — ну минут 15-20 максимум (поставить да скормить адреса / пароли железок)
— но нет-же, надо плодить кучу самописной ерунды.

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

а если вам надо маленький сервер сделать — то напишете свою ОС, ибо ставить линукс — это как покупать газель, да?

все «внедрение» NOC'а — ну минут 15-20 максимум (поставить да скормить адреса / пароли железок)
— но нет-же, надо плодить кучу самописной ерунды.


Ну зачем же так утрировать:)
Человек совместил «приятное с полезным»- написал сам скрипт, и решил проблему для комании. ПУсть учится и развивается. А про NOC: если вам надо сделать небольшую текствую заметку вы наверное Word открываете?;)

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


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

Возможно это действительно велосипед, но зато я могу его модернизировать и дополнять как угодно, при том что критичность сбора конфига невысокая, и едва ли нанесет ощутимый ущерб, если вдруг что, а из SVN они уж точно никуда не денутся

За ссылки спасибо. Скорее всего NOC поставлю в другом своем проекте, где как раз необходимо иметь веб доступ для не очень подкованных коллег.
все «внедрение» NOC'а — ну минут 15-20 максимум (поставить да скормить адреса / пароли железок)
— но нет-же, надо плодить кучу самописной ерунды.


На первых порах NOC была далеко не простая штука, и что бы поставить и заставить работать нужно было приложить не мало усилий. Ковырял его пару недель, так внятной работы и не добился — поставил rancid, до сих пор использую. Возможно сейчас что-то изменилось.
Кстати, действительно, чем не угодил RANCID? Нужны веские основания для написания чего-то своего, если есть что-то такое же, только готовое. Все-таки готовый программный продукт, это не просто код, но и чужой опыт и чужая работа над ошибками. По закону подлости ошибки в своем скрипте проявятся как раз во время аварии :)
Помимо сбора и хранения конфигурации, для некоторого специфичного оборудования производится ее анализ и заполнение базы данных, для последующих манипуляций с этими данными. Т.е. есть еще набор узко специфичных задач, которые делает скрипт
В таком случае, подозреваю, что ваши узкоспециальные задачи весьма широко распространены :)
Настоятельно рекомендую все-таки посмотреть на NOC, в частности на Map/Reduce Tasks (http://redmine.nocproject.org/boards/3/topics/1084?r=1094#message-1094).
Уже присматриваюсь к этому проекту. Спасибо.
Дима — его автор :P

Проект открытый и активно развивается. Если есть энтузиазм и свежие идеи, предлагаю поучавствовать. Основное обсуждение ведется на IRC (#nocproject.org @ irc.freenode.net)
Писал недавно похожий велосипед, но с возможностью хранить комментарии к каждой из строк: github.com/unicast/conkeep
Only those users with full accounts are able to leave comments. Log in, please.