跟随YouTube Ansible网络工程师基础演示时遭遇「operation requires privilege escalation」错误的解决求助
解决Ansible「operation requires privilege escalation」错误
这个错误的核心原因是:你的Cisco路由器需要进入特权EXEC模式(也就是enable模式)才能执行全局配置命令,但你的Playbook只提供了基础的登录凭证,没有配置特权模式的授权参数。
具体解决方案
你需要在Playbook的cli变量中添加特权模式的授权配置,步骤如下:
- 确认你的路由器特权模式密码:如果你的设备登录后需要输入
enable+密码才能进入特权模式,记下这个密码(如果和登录密码相同,也可以复用)。 - 更新Playbook的
vars部分:在cli字典里添加authorize: yes和auth_pass字段,修改后的Playbook示例如下:
- name: Danny's Generic Router Configuration hosts: R1 gather_facts: false connection: local vars: cli: username: admin password: cisco authorize: yes # 开启特权模式授权 auth_pass: cisco # 替换成你的路由器enable密码 timeout: 100 tasks: - name: Global config settings ios_config: provider: "{{ cli }}" lines: - ipv6 unicast-routing - errdisable recovery interval 60 - security passwords min-length 5 - ip name-server 99.99.99.99 - no ip http server - ip http secure-server - snmp-server community ipvzero1 RO - snmp-server community ipvzero2 RW - ntp server 99.99.99.99 - banner motd &**********THIS IS Danny'S ROUTER - DO NOT MAKE CHANGES UNLESS AUTHORISED! YOU WILL BE PROSECUTED! **********& register: print_output - debug: var=print_output
为什么这样能解决问题?
Cisco IOS设备默认登录后处于用户EXEC模式,这个模式只能执行查看类命令,无法修改配置。要执行configure terminal并修改全局配置,必须先进入特权EXEC模式(通过enable命令)。Ansible的ios_config模块在执行配置命令前,需要你明确授权进入特权模式,否则就会抛出「operation requires privilege escalation」的错误。
额外检查项
- 确保你填写的
auth_pass和路由器的enable密码完全一致,注意大小写敏感。 - 如果你的路由器没有设置enable密码(不推荐生产环境这么做),可以尝试只添加
authorize: yes,去掉auth_pass字段,但这种情况比较少见。
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

