如何解决Ansible community.general.nmcli在Raspbian 10上运行报错问题
问题解决方法
错误根因
Raspbian 10(Buster)官方源内置的NetworkManager版本为1.14.x,该版本不支持routing-rules属性,而新版本的community.general集合中的nmcli模块会默认尝试操作该属性,因此触发参数不兼容的报错。
可选解决方案
方案1:降级community.general集合到兼容版本
3.7.0及更早版本的community.general集合的nmcli模块未加入routing-rules相关逻辑,和Raspbian 10自带的NetworkManager版本兼容。执行以下命令安装指定版本集合:
ansible-galaxy collection install community.general:==3.7.0 --force
安装完成后重新运行原有playbook即可正常执行。
方案2:直接调用nmcli命令行配置网络
如果不想降级Ansible集合版本,可以将原有nmcli模块的任务替换为直接调用shell执行nmcli命令,兼容性更好,且可以保证幂等,示例任务如下:
- name: configure network via nmcli command become: true shell: | nmcli con add con-name my-eth0 ifname eth0 type ethernet ip4 192.168.1.2/24 gw4 192.168.1.1 nmcli con up my-eth0 args: creates: /etc/NetworkManager/system-connections/my-eth0.nmconnection
内容的提问来源于stack exchange,提问作者Pierre D
相关产品推荐
相关产品推荐

