You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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环境:
    sudo apt remove ansible -y
    sudo apt install ansible -y
    
    CentOS/RHEL环境:
    sudo yum remove ansible -y
    sudo yum install ansible -y
    

2. 检查Python环境,避免版本冲突

有时候系统里存在多个Python版本,Ansible调用的Python环境和安装Ansible的环境不一致,就会出现找不到模块的情况:

  • 先查看Ansible当前使用的Python版本和路径:
    ansible --version
    
    输出里会显示类似python version = 2.7.17 (default, Oct 19 2019, 21:55:18) [GCC 7.4.0]的信息,确认这个Python环境是否安装了完整的Ansible依赖。
  • 如果发现版本不匹配,可以指定Ansible使用的Python解释器,比如在ansible.cfg里添加:
    [defaults]
    interpreter_python = /usr/bin/python2.7
    
    替换成你正确的Python路径。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:26:14