Отказ модуля Ansible (2.5.0) - ios_user, ios_ping - PullRequest
0 голосов
/ 18 мая 2018

Я занимался программированием Ansible playbook, и внезапно у меня появилась «Ошибка модуля», и я понятия не имею, почему.Я попробовал каждый модуль индивидуально в CLI с каждой опцией.Я запустил проверку синтаксиса (--syntax-check), и с этим не было никаких проблем.Я думаю, что это может быть ошибкой.

Работает модуль "ios_facts":

$ ansible all -m ios_facts -i Resources/Inventory/hosts 

10.20.30.111 |SUCCESS => {

"ansible_facts": {
    "ansible_net_all_ipv4_addresses": [
        "10.20.30.111"
    ], 
    "ansible_net_all_ipv6_addresses": [], 
    "ansible_net_filesystems": [
        "flash:"
(...)

«ios_ping» возвращает эту ошибку:

$ ansible all -m ios_ping -a"dest='1.1.1.1'" -i Resources/Inventory/hosts

10.20.30.111 |НЕ УДАЛОСЬ!=> {"change": false, "module_stderr": "Traceback (последний последний вызов): \ n File \" / tmp / ansible_WOH7nd / ansible_module_ios_ping.py \ ", строка 215, в \ n main () \ n File\ "/ tmp / ansible_WOH7nd / ansible_module_ios_ping.py \", строка 151, в основном \ n успехе, rx, tx, rtt = parse_ping (stats) \ n Файл \ "/ tmp / ansible_WOH7nd / ansible_module_ios_ping.py \", строка 200, в parse_ping \ n return rate.group (\ "pct \"), rate.group (\ "rx \"), rate.group (\ "tx \"), rtt.groupdict () \ nAttributeError: 'NoneType'У объекта нет атрибута 'group' \ n "," module_stdout ":" "," msg ":" MODULE FAILURE "," rc ": 1}

" ios_user "возвращает этоошибка:

Исключительная ситуация при выполнении задачи.Чтобы увидеть полную трассировку, используйте -vvv.Ошибка была: ASwitch #

10.20.30.111 |НЕ УДАЛОСЬ!=> {"change": false, "module_stderr": "Traceback (последний последний вызов): \ n File \" / tmp / ansible_UX9ZWc / ansible_module_ios_user.py \ ", строка 409, в \ n main () \ n File\ "/ tmp / ansible_UX9ZWc / ansible_module_ios_user.py \", строка 382, ​​в основном \ n have = map_config_to_obj (модуль) \ n файл \ "/ tmp / ansible_UX9ZWc / ansible_module_ios_user.py \", строка 242, в map_objto_ data_objto= get_config (module, flags = ['| section username']) \ n Файл \ "/ tmp / ansible_UX9ZWc / ansible_modlib.zip / ansible / module_utils / network / ios / ios.py \", строка 117, в get_config \ nФайл \ "/ tmp / ansible_UX9ZWc / ansible_modlib.zip / ansible / module_utils / connection.py \", строка 146, в rpc \ nansible.module_utils.connection.ConnectionError: show running-config | section username \r \ n ^ \ r \ n% В маркере '^' обнаружен неверный ввод. \ r \ n \ r \ nASwitch # \ n "," module_stdout ":" "," msg ":" СБОЙ МОДУЛЯ "," rc ": 1}

Конфигурация IOS: config.text

Ansible Inventory: Ресурсы /Инвентарь / хоsts

Ansible Version: 2.5.0

Версия Cisco IOS: 12.2(55)SE

Соединение работаетхорошо, и я также смог выполнить модуль "ios_system".Ребята, вы понимаете, что это может быть?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Как оказалось, модуль ios_user несовместим с версией Cisco IOS 12.2 (55) SE , поскольку он использует выходной фильтр ("section"), которая недоступна для версии этого устройства.Чтобы это исправить, мне просто нужно было заменить слово "section" на "include" в файле ansible/modules/network/ios/ios_user.py (полный путь к файлу зависит от вашей установки)потому что вы можете использовать виртуальную среду). Вот код модуля .Тогда эта часть кода выглядела следующим образом:

def map_config_to_obj(module):
    data = get_config(module, flags=['| include username'])

   match = re.findall(r'^username (\S+)', data, re.M)
    if not match:
        return list()

Модуль теперь работает как намерение.Что касается ios_ping, я пытался реконструировать его код, и, на мой взгляд, имеет более одной ошибки.Я думаю, что это работает только тогда, когда показатель успеха выше 0%.

0 голосов
/ 18 мая 2018

Вторая ошибка говорит о том, что

show running-config | section username

не является допустимой командой на вашем устройстве.Можете ли вы попробовать запустить его вручную, скорее всего, он тоже не получится.Я предполагаю, что ваш IOS слишком старый или слишком новый для большинства модулей ios_ (12.2-а точно вы работаете?).Это также может объяснить, что пинг не работает из-за различий в выводе команды.

...