Ansible执行基础脚本遇ImportError: No module named version求助
解决Ansible收集Facts时出现
ImportError: No module named version的问题 看起来你的Ansible在收集本地主机facts的时候遇到了模块缺失的问题,这个错误一般是Ansible安装损坏或者Python环境冲突导致的,我给你几个可行的解决思路:
1. 重新安装Ansible,修复损坏的组件
这个错误最常见的原因就是Ansible的核心模块文件丢失或者损坏,重新安装可以解决大部分这类问题:
- 如果是用
pip安装的Ansible:pip uninstall ansible -y pip install ansible - 如果是用系统包管理器(比如Ubuntu/Debian的apt,CentOS/RHEL的yum):
Ubuntu/Debian环境:
CentOS/RHEL环境:sudo apt remove ansible -y sudo apt install ansible -ysudo yum remove ansible -y sudo yum install ansible -y
2. 检查Python环境,避免版本冲突
有时候系统里存在多个Python版本,Ansible调用的Python环境和安装Ansible的环境不一致,就会出现找不到模块的情况:
- 先查看Ansible当前使用的Python版本和路径:
输出里会显示类似ansible --versionpython version = 2.7.17 (default, Oct 19 2019, 21:55:18) [GCC 7.4.0]的信息,确认这个Python环境是否安装了完整的Ansible依赖。 - 如果发现版本不匹配,可以指定Ansible使用的Python解释器,比如在
ansible.cfg里添加:
替换成你正确的Python路径。[defaults] interpreter_python = /usr/bin/python2.7
3. 清理Ansible临时文件
错误信息里提到的临时目录/home/vagrant/.ansible/tmp/可能存在损坏的临时文件,清理后重新运行脚本试试:
rm -rf /home/vagrant/.ansible/tmp/
4. 临时跳过gather_facts(应急方案)
如果只是需要临时运行脚本完成备份任务,可以先关闭gather_facts,手动获取时间变量:
--- - name: backup devices hosts: localhost connection: local gather_facts: no tasks: - shell: date +%H-%M-%S register: time_output - set_fact: systime: "{{ time_output.stdout }}" - debug: var=systime
内容的提问来源于stack exchange,提问作者farhad
相关产品推荐
相关产品推荐

