我试图通过Ansible安装软件包但是使用python2.7获取没有名为yum的模块错误。有人曾经遇到过这个问题吗?
答案 0 :(得分:1)
Fedora Core 3?难怪!那个版本是从2004年开始的。我十多年前的记忆有点朦胧 - 似乎yum在那个版本中可用,但我认为" up2date"仍然是官方的高级包裹经理。
但是,同样,yum版本是2.x,并且打包它与当时的Python系统Python一起工作。即使使用kludges,ansible模块也不太可能工作。如果你真的需要在那里安装软件包,你需要找到另一种方法*。此外,FC3的镜像基础架构不再存在 - 您至少需要指向the archive。
但是,我确实鼓励你尽可能地使用更新版本的Fedora,不仅仅是为了方便工作(不过,还有那些)但是因为有很多已知的漏洞可以使用在FC3上 - 我会非常犹豫是否有任何Linux发行版在2006年在网络上达到了终点。 (免责声明:我碰巧在当前的Fedora上工作)。*替代方式:最简单的方法可能是跳过yum模块,只是让ansible直接运行yum命令。
答案 1 :(得分:1)
我的问题是我已经将ansible_python_interpreter设置为默认python之外的其他东西,因为我需要一个virtualenv python。 virtualenv python没有安装yum模块。
在我设置ansible_python_interpreter事实之前执行yum语句为我修复了这个问题。如果这不是一个选项,我本可以将事实设置回原始值(通常是/ usr / bin / python)。
对于那些希望设置此事实的人,您可以使用:
- set_fact:
ansible_python_default_interpreter: "{{ ansible_python_interpreter }}"
ansible_python_interpreter: "{{ virtualenv_dir }}/bin/python"
其中{{virtualenv_dir}}是您使用pip模块安装虚拟环境的目录,如http://docs.ansible.com/ansible/pip_module.html所述。
然后将其设置回来:
- set_fact:
ansible_python_interpreter: "{{ ansible_python_default_interpreter }}"
这是由sys.executable返回的,通常是/ usr / bin / python。
好奇的是,这是ansible / lib / ansible / inventory / __ init __ .py第461-462行的当前代码块(可能会有变化!):
if "ansible_python_interpreter" not in new_host.vars:
new_host.set_variable("ansible_python_interpreter", sys.executable)
我在这个帖子中找到了关于解释器事实的专业提示。 https://groups.google.com/forum/#!msg/ansible-project/yNWKzV5F-QU/e-vkWJKf6tQJ
答案 2 :(得分:-2)
模块是包含Python定义和语句的文件。文件名是附加后缀.py的模块名称。 参考:https://docs.python.org/2/tutorial/modules.html
如果您收到的错误表明"没有名为yum的模块"这是因为没有yum.py文件。
Windows系统不支持Ansible和YUM。 参考:http://docs.ansible.com/intro_installation.html