Рейтинг:0

Соль-прокси с Junos 18.x

флаг cn
Mou

Некоторое время я использовал salt-sproxy с нашей сетью на основе Juniper, и все работало нормально.

Я начал находить некоторые проблемы с новым кодом Junos, который мы используем (18.x).

Я могу общаться с устройством (net.connected, net.cli, зернышки....и т.д.), но не могу ничего на нем настроить ни через net.cli, ни через net.load_config/template, устройство не сообщает вернет любой дифф и увидит, что новые конфиги уже настроены, даже если новый сет-файл содержит новые конфиги, не настроенные на устройстве точно.

И я не вижу ничего, что возвращается с устройства через rpc-reply при отладке запроса.

Я проверил это на нескольких устройствах Juniper с одним и тем же кодом, и все они ведут себя одинаково неправильно.

salt-sproxy '10-220-1-9' net.load_config text='set vlans vlan888 vlan-id 888'
10-220-1-9:
    ----------
    уже_настроено:
        Истинный
    комментарий:
        Уже настроен.
    разница:
    загруженная_конфигурация:
    результат:
        Истинный


mkh@sw220-1-9> показать конфигурацию vlans vlan888

{мастер: 0}
mkh@sw220-1-9>

Отладка показывает то же самое

[INFO] [host 10.220.1.9 session-id 82730] Запрос «ExecuteRpc»
[ОТЛАДКА] [host 10.220.1.9 session-id 82730] постановка в очередь <?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns: netconf:base:1.0" message-id="urn:uuid:ff66d123-c081-487d-971f-5d7e2932524a"><lock-configuration/></nc:rpc>
[DEBUG] [host 10.220.1.9 session-id 82730] Запрос на синхронизацию, будет ждать timeout=60
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Отправка сообщения
[INFO] [host 10.220.1.9 session-id 82730] Отправка:
<?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid :ff66d123-c081-487d-971f-5d7e2932524a"><lock-configuration/></nc:rpc>]]>]]>
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[INFO] [host 10.220.1.9 session-id 82730] Получено сообщение от хоста
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Получено:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/18.2R3/junos" xmlns:nc=" urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:ff66d123-c081-487d-971f-5d7e2932524a">
</rpc-ответ>
[ОТЛАДКА] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение разным слушателям: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http:/ /xml.juniper.net/junos/18.2R3/junos" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:ff66d123-c081-487d- 971f-5d7e2932524a">
</rpc-ответ>
[DEBUG] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение слушателю: <объект ncclient.operations.rpc.RPCReplyListener по адресу 0x7fa31e732670>
[DEBUG] [host 10.220.1.9 session-id 82730] Доставка в объект <ncclient.operations. Third_party.juniper.rpc.ExecuteRpc по адресу 0x7fa31efeac10>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <объект ncclient.transport.session.NotificationHandler по адресу 0x7fa31e644130>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <jnpr.junos.device.DeviceSessionListener object at 0x7fa31e628370>
[INFO] [host 10.220.1.9 session-id 82730] Запрос «ExecuteRpc»
[ОТЛАДКА] [host 10.220.1.9 session-id 82730] постановка в очередь <?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns: netconf:base:1.0" message-id="urn:uuid:5f53421e-6d44-4c58-91e1-c19ccea38b1e"><load-configuration format="text" action="set"><configuration-set>set vlans vlan888 vlan -id 888
</configuration-set></load-configuration></nc:rpc>
[DEBUG] [host 10.220.1.9 session-id 82730] Запрос на синхронизацию, будет ждать timeout=60
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Отправка сообщения
[INFO] [host 10.220.1.9 session-id 82730] Отправка:
<?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid :5f53421e-6d44-4c58-91e1-c19ccea38b1e"><load-configuration format="text" action="set"><configuration-set>set vlans vlan888 vlan-id 888
</configuration-set></load-configuration></nc:rpc>]]>]]>
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[INFO] [host 10.220.1.9 session-id 82730] Получено сообщение от хоста
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Получено:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/18.2R3/junos" xmlns:nc=" urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:5f53421e-6d44-4c58-91e1-c19ccea38b1e">
<загрузить-конфигурацию-результатов>
<ок/>
</загрузить-конфигурация-результаты>
</rpc-ответ>
[ОТЛАДКА] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение разным слушателям: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http:/ /xml.juniper.net/junos/18.2R3/junos" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:5f53421e-6d44-4c58- 91e1-c19ccea38b1e">
<загрузить-конфигурацию-результатов>
<ок/>
</загрузить-конфигурация-результаты>
</rpc-ответ>
[DEBUG] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение слушателю: <объект ncclient.operations.rpc.RPCReplyListener по адресу 0x7fa31e732670>
[DEBUG] [host 10.220.1.9 session-id 82730] Доставка в объект <ncclient.operations. Third_party.juniper.rpc.ExecuteRpc по адресу 0x7fa31f160fd0>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <объект ncclient.transport.session.NotificationHandler по адресу 0x7fa31e644130>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <jnpr.junos.device.DeviceSessionListener object at 0x7fa31e628370>
[INFO] [host 10.220.1.9 session-id 82730] Запрос «ExecuteRpc»
[ОТЛАДКА] [host 10.220.1.9 session-id 82730] постановка в очередь <?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns: netconf:base:1.0" message-id="urn:uuid:aa19bafc-a8b9-42ee-a9ae-f18de0448176"><get-configuration compare="rollback" rollback="0" format="text"/></nc :рпц>
[DEBUG] [host 10.220.1.9 session-id 82730] Запрос на синхронизацию, будет ждать timeout=60
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Отправка сообщения
[INFO] [host 10.220.1.9 session-id 82730] Отправка:
<?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid :aa19bafc-a8b9-42ee-a9ae-f18de0448176"><get-configuration compare="rollback" rollback="0" format="text"/></nc:rpc>]]>]]>
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[INFO] [host 10.220.1.9 session-id 82730] Получено сообщение от хоста
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Получено:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/18.2R3/junos" xmlns:nc=" urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:aa19bafc-a8b9-42ee-a9ae-f18de0448176">
<информация о конфигурации>
<вывод-конфигурации>
</вывод-конфигурации>
</ информация о конфигурации>
</rpc-ответ>
[ОТЛАДКА] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение разным слушателям: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http:/ /xml.juniper.net/junos/18.2R3/junos" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:aa19bafc-a8b9-42ee- a9ae-f18de0448176">
<информация о конфигурации>
<вывод-конфигурации>
</вывод-конфигурации>
</ информация о конфигурации>
</rpc-ответ>
[DEBUG] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение слушателю: <объект ncclient.operations.rpc.RPCReplyListener по адресу 0x7fa31e732670>
[DEBUG] [host 10.220.1.9 session-id 82730] Доставка в объект <ncclient.operations. Third_party.juniper.rpc.ExecuteRpc по адресу 0x7fa31f0edb80>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <объект ncclient.transport.session.NotificationHandler по адресу 0x7fa31e644130>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <jnpr.junos.device.DeviceSessionListener object at 0x7fa31e628370>
[DEBUG] Отказ от конфигурации
[DEBUG] {'result': True, 'comment': '', 'already_configured': False, 'loaded_config': '', 'diff': ''}
[INFO] [host 10.220.1.9 session-id 82730] Запрос «ExecuteRpc»
[ОТЛАДКА] [host 10.220.1.9 session-id 82730] постановка в очередь <?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns: netconf:base:1.0" message-id="urn:uuid:4ef1fa52-c32d-49c4-aab2-e2db867a3761"><load-configuration compare="rollback" rollback="0"/></nc:rpc>
[DEBUG] [host 10.220.1.9 session-id 82730] Запрос на синхронизацию, будет ждать timeout=60
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Отправка сообщения
[INFO] [host 10.220.1.9 session-id 82730] Отправка:
<?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid :4ef1fa52-c32d-49c4-aab2-e2db867a3761"><load-configuration compare="rollback" rollback="0"/></nc:rpc>]]>]]>
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[INFO] [host 10.220.1.9 session-id 82730] Получено сообщение от хоста
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Получено:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/18.2R3/junos" xmlns:nc=" urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:4ef1fa52-c32d-49c4-aab2-e2db867a3761">
<загрузить-конфигурацию-результатов>
<ок/>
</загрузить-конфигурация-результаты>
</rpc-ответ>
[ОТЛАДКА] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение разным слушателям: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http:/ /xml.juniper.net/junos/18.2R3/junos" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:4ef1fa52-c32d-49c4- aab2-e2db867a3761">
<загрузить-конфигурацию-результатов>
<ок/>
</загрузить-конфигурация-результаты>
</rpc-ответ>
[DEBUG] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение слушателю: <объект ncclient.operations.rpc.RPCReplyListener по адресу 0x7fa31e732670>
[DEBUG] [host 10.220.1.9 session-id 82730] Доставка в объект <ncclient.operations. Third_party.juniper.rpc.ExecuteRpc по адресу 0x7fa31f160f70>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <объект ncclient.transport.session.NotificationHandler по адресу 0x7fa31e644130>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <jnpr.junos.device.DeviceSessionListener object at 0x7fa31e628370>
[INFO] [host 10.220.1.9 session-id 82730] Запрос «ExecuteRpc»
[ОТЛАДКА] [host 10.220.1.9 session-id 82730] постановка в очередь <?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns: netconf:base:1.0" message-id="urn:uuid:ddb0f24c-387a-4366-9703-9a618e7ad6f4"><unlock-configuration/></nc:rpc>
[DEBUG] [host 10.220.1.9 session-id 82730] Запрос на синхронизацию, будет ждать timeout=60
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Отправка сообщения
[INFO] [host 10.220.1.9 session-id 82730] Отправка:
<?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid :ddb0f24c-387a-4366-9703-9a618e7ad6f4"><unlock-configuration/></nc:rpc>]]>]]>
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[INFO] [host 10.220.1.9 session-id 82730] Получено сообщение от хоста
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Получено:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/18.2R3/junos" xmlns:nc=" urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:ddb0f24c-387a-4366-9703-9a618e7ad6f4">
</rpc-ответ>
[ОТЛАДКА] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение разным слушателям: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http:/ /xml.juniper.net/junos/18.2R3/junos" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:ddb0f24c-387a-4366- 9703-9a618e7ad6f4">
</rpc-ответ>
[DEBUG] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение слушателю: <объект ncclient.operations.rpc.RPCReplyListener по адресу 0x7fa31e732670>
[DEBUG] [host 10.220.1.9 session-id 82730] Доставка в объект <ncclient.operations. Third_party.juniper.rpc.ExecuteRpc по адресу 0x7fa31f0ed430>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <объект ncclient.transport.session.NotificationHandler по адресу 0x7fa31e644130>
[DEBUG] [host 10.220.1.9 session-id 82730] отправляет сообщение слушателю: <jnpr.junos.device.DeviceSessionListener object at 0x7fa31e628370>
[INFO] [host 10.220.1.9 session-id 82730] Запрос «CloseSession»
[ОТЛАДКА] [host 10.220.1.9 session-id 82730] постановка в очередь <?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns: netconf:base:1.0" message-id="urn:uuid:f8b65a65-5563-46b3-a7a1-36f2da78487e"><nc:close-session/></nc:rpc>
[DEBUG] [host 10.220.1.9 session-id 82730] Запрос на синхронизацию, будет ждать timeout=60
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Отправка сообщения
[INFO] [host 10.220.1.9 session-id 82730] Отправка:
<?xml version="1.0" encoding="UTF-8"?><nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid :f8b65a65-5563-46b3-a7a1-36f2da78487e"><nc:close-session/></nc:rpc>]]>]]>
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[DEBUG] [host 10.220.1.9 session-id 82730] анализ netconf v1.0
[INFO] [host 10.220.1.9 session-id 82730] Получено сообщение от хоста
[DEBUG] [host 10.220.1.9 идентификатор сеанса 82730] Получено:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/18.2R3/junos" xmlns:nc=" urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:f8b65a65-5563-46b3-a7a1-36f2da78487e">
<ок/>
</rpc-ответ>
[ОТЛАДКА] [хост 10.220.1.9 идентификатор сеанса 82730] отправляет сообщение разным слушателям: <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http:/ /xml.juniper.net/junos/18.2R3/junos" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:f8b65a65-5563-46b3- a7a1-36f2da78487e">
<ок/>
</rpc-ответ>

Еще один момент: те же команды set file + net работают для другого кода Junos, отличного от 18, протестировано на 20.4 и 15.1 без подобных проблем.

Я добавил это в проект Salt-sproxy, как показано ниже, и убедился, что проблема не связана ни с Napalm, ни с netconf, которые были протестированы по отдельности и работали:

https://github.com/mirceaulinic/salt-sproxy/issues/255

Ценю любую поддержку и с наилучшими пожеланиями, Моу

Ответить или комментировать

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