首页 文章

Ansible(2.5.0)模块失败 - ios_user,ios_ping

提问于
浏览
0

我正在编写一本Ansible剧本,我突然开始得到"Module Error",我不明白为什么 . 我在每个选项中都在CLI中单独尝试了每个模块 . 我运行了语法检查( --syntax-check )并且没有问题 . 我认为这很不错 .

"ios_facts" module works:

$ 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”:[
“闪:”
(......)

"ios_ping" returns this error:

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

10.20.30.111 |失败! => {“changed”:false,“module_stderr”:“Traceback(最近一次调用最后一次):\ n文件\”/ tmp / ansible_WOH7nd / ansible_module_ios_ping.py \“,第215行,在\ n main()\ n文件中\“/ tmp / ansible_WOH7nd / ansible_module_ios_ping.py \”,第151行,主要成功,rx,tx,rtt = parse_ping(stats)\ n文件\“/ tmp / ansible_WOH7nd / ansible_module_ios_ping.py \”,第200行,在parse_ping \ n中返回rate.group(\“pct \”),rate.group(\“rx \”),rate.group(\“tx \”),rtt.groupdict()\ nAttributeError:'NoneType'对象没有属性'group'\ n“,”module_stdout“:”“,”msg“:”MODULE FAILURE“,”rc“:1}

"ios_user" returns this error:

任务执行期间发生异常 . 要查看完整的回溯,请使用-vvv . 错误是:ASwitch#10.20.30.111 |失败! => {“changed”:false,“module_stderr”:“Traceback(最近一次调用最后一次):\ n文件\”/ tmp / ansible_UX9ZWc / ansible_module_ios_user.py \“,第409行,在\ n main()\ n文件中\“/ tmp / ansible_UX9ZWc / ansible_module_ios_user.py \”,第382行,在主\ n中有= map_config_to_obj(模块)\ n文件\“/ tmp / ansible_UX9ZWc / ansible_module_ios_user.py \”,第242行,在map_config_to_obj \ n数据中= 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 \ n%在'^'标记处检测到无效输入 . \ r \ n \ r \ n开关#\ n“,”module_stdout“:”“,”msg“:”MODULE FAILURE“,”rc“:1}

IOS config: config.text

Ansible Inventory: Resources/Inventory/hosts

Ansible Version: 2.5.0

Cisco IOS version: 12.2(55)SE

连接工作正常,我也能够执行“ios_system”模块 . 你们有什么想法吗?

2 回答

  • 1

    第二个错误表明

    show running-config | section username
    

    不是您设备上的有效命令 . 你可以尝试手动运行它,很可能它也会失败 . 我猜你的IOS对于大多数ios_模块而言太旧或太新了(12.2-whatexactly你在运行吗?) . 这也可以解释由于命令输出的差异而导致ping不起作用 .

  • 1

    事实证明, ios_user 模块与Cisco IOS版本 12.2(55)SE 不兼容,因为它使用的输出过滤器(“ section ”)不适用于此设备的版本 . 要解决此问题,我只需在 ansible/modules/network/ios/ios_user.py 文件中用 "section" 替换 "section" (完整的文件路径取决于您的安装,因为您可能正在使用虚拟环境) . Here is the module code . 所以代码的那部分看起来像这样:

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

    match = re.findall(r'^ username(\ S)',data,re.M)
    如果不匹配:
    返回列表()

    该模块现在有意义 . 至于 ios_ping ,我的代码,在我看来,还有一个以上的bug . 我认为只有在成功率高于 0% 时才有效 .

相关问题