Showing posts with label netconf. Show all posts
Showing posts with label netconf. Show all posts

Tuesday, July 25, 2017

Create wagon for netconf

On separate centos machine(if you use centos as base for cloudify manager).
Prepare external python packages:
  • sudo yum install -y epel-release
  • sudo yum install -y python-pip python-setuptools python-pip python-wheel python-setuptools python-virtualenv

Install packages for lxml dependencies:
  • sudo yum install -y python-devel gcc-c++ gcc libxslt-devel libxml2-devel zlib-devel libffi-devel openssl-devel

Install wagon environment:
  • mkdir wagon
  • virtualenv wagon
  • cd wagon
  • . bin/activate
  • pip install --upgrade pip
  • pip install wagon

Create wagon:

On Manager:
  • sudo yum install -y openssl libxml2 libxslt

Thursday, February 11, 2016

Netconf клиент

Пример использования netconf протокола совместно с cloudify. 

Для использования этого протокола с использованием python есть несколько вариантов:
  • использовать уже существующие библиотеки заточенные под конкретные устройства (не обязательно аппаратные, можно и программные реализации) - ncclient. Хорошее решение если кто-то побеспокоился и создал код для нужного устройства, если нет нужно разбираться и писать код;
  • реализовать самому протокол посмотрев в стандарты: rfc6241 - общее описания какие команды, есть и как их использовать; rfc6242 - низкоуровневое описание как общаться. Ничего особо сложного в этом нет, но если использовать python или C больше похоже на изобретение велосипеда;
  • остановится на решении которое бы реализовывало протокол, но сами пакеты пользователь формулирует в удобном ему виде.
Как пример последнего может быть cloudify-netconf-plugin :-) Код в репозитории можно разбить на 3 вида:
  • реализация самого протокола общения netconf_connection.py, поддерживает NetConf 1.0 и 1.1 поверх ssh.
  • реализация преобразования python словарей в xml нужного формата и обратно utils.py
  • интеграция с cloudify xml_rpc.py
Как результат мы имеем дополнение к cloudify которое позволяет автоматизировать действия с настройками устройств поддерживающих этот протокол используя tosca yaml blueprints формат.

Cloudify позволяет сделать гораздо более широкие возможности чем поменять настройку какого-то устройства и при желании можно дописать плагинчик под что угодно, если плагинов по умолчанию или скриптования на bash c python вам не достаточно, но сейчас не об этом речь. Более подробно можно почитать на getcloudify.org.
Вернёмся к тому что представляет из себя плагин - он позволяет описать последовательность команд которые нужно отправить на устройство в yaml как последовательность действий внутри ноды указав действие которое нужно выполнить с указанием параметров для этого действия. Система изначально ориентирована на то что нужно получить описание интерфейса устройства в виде yang файла потом прогнать их через yttc для получения шаблона который потом подключить в нужный blueprint. Но никто не мешает напрямую писать нужные описания данных сразу в blueprint.

Запускать для turing машины это все достаточно просто(только нужно пометь в этой последовательности пароли и хост на реальные):
  • mkdir turing
  • virtualenv turing
  • cd turing
  • . bin/activate
  • git clone git@github.com:cloudify-cosmo/cloudify-netconf-plugin.git
  • pip install -e cloudify-netconf-plugin
  • pip install cloudify
  • touch netconf_inputs.yaml
  • echo "netconf_ip: localhost" >> netconf_inputs.yaml
  • echo "netconf_user: netconf" >> netconf_inputs.yaml
  • echo "netconf_password: netconf" >> netconf_inputs.yaml
  • cfy local init -p cloudify-netconf-plugin/blueprint_examples/turing.yaml -i netconf_inputs.yaml
  • cfy local execute -w install

Код можно использовать как совместно с cloudify, так и без него только нужно написать обертку над модулями для запуска функциональности.

Monday, January 4, 2016

Netconf protocol

Инструкция по установке тестового сервера для проверки netconf протокола. Для этой цели вполне подойдет netopeer сервер, желательно его ставить на centos, так как установка на убунту сложнее так как нет части библиотек и нужно ставить их вручную.
  • Для начала нужно скачать образ CentOS-7-x86_64-Minimal-1511.iso и запустить в любимой виртуалке Затем установить пакеты, которые в дальнейшем будут нужны для сборки сервера:
    • yum install libssh-devel libcurl-devel epel-release gcc libxml2-devel libxslt-devel libtool git wget libcurl-devel libssh2-devel libxml2 libxml2-python dbus-devel readline-devel
  • И доставить еще немножко
    • yum install python-pip
    • pip install pyang
    Это нужно так как pip идет отдельном репозитории epel-release и как следствие поставить сразу пакет и репозиторий не получится.
  • Поставить libnetconf библиотеку
    • git clone https://github.com/CESNET/libnetconf.git
    • cd libnetconf/
    • git checkout 0.9.x (commit 1f117e5a8017c3ec630f890faaee8ff28d382798)
    • ./configure --prefix=/usr
    • make
    • make install
    • ln -s /usr/lib/pkgconfig/libnetconf.pc /usr/lib64/pkgconfig/
    • cd ../
  • Установить сервер
    • git clone https://github.com/CESNET/netopeer.git
    • cd netopeer/
    • git checkout libnetconf-0.9.x (commit 092e2ea95e77e1b6a2f93a53d43b1917532a1137)
    • cd server
    • ./configure --sysconfdir=/etc --prefix=/usr
    • make
    • make install
  • Установить клиентские утилиты
    • cd ../cli/
    • ./configure --sysconfdir=/etc --prefix=/usr
    • make
    • make install
    • netopeer-configurator
  • Добавить модуль для эмуляции расширения протокола
    • cd ../netopeer/transAPI/turing/
    • ./configure --prefix=/usr
    • make
    • make clean
    • make
    • make install
  • И проверить, что у нас получилось:
    • netopeer-server -v 3 -d
    • ssh -p 830 root@localhost -s netconf
Последняя команда должна выдать полный список поддерживаемых расширений протокола. Все конечно ставится варварским способом в основную систему без пакетов и отката изменений, но это все же виртуальная машина.