Ansible - 解压缩 - 输入文件未找到。

9

在Ansible(1.9.2)尝试解包文件时,我遇到了此错误。

19:06:38 TASK: [jmeter | unpack jmeter] ************************************************ 
19:06:38 fatal: [jmeter01.veryfast.server.jenkins] => input file not found at /tmp/apache-jmeter-2.13.tgz or /tmp/apache-jmeter-2.13.tgz
19:06:38 
19:06:38 FATAL: all hosts have already failed -- aborting
19:06:38 

我在目标服务器上检查了一下,/tmp/apache-jmeter-2.13.tgz文件存在,并且它具有有效的权限(为了测试,我甚至给了777,尽管不需要,但仍然收到了上述错误消息)。
我还检查了该文件的md5sum(将其与apache jmeter网站上的内容进行比较)-- 它匹配!
# md5sum apache-jmeter-2.13.tgz|grep 53dc44a6379b7b4a57976936f3a65e03
53dc44a6379b7b4a57976936f3a65e03  apache-jmeter-2.13.tgz

当我使用tar -xvzf命令对这个文件进行操作时,tar能够显示/提取.tgz文件中的内容。
我可能错过了什么?此时,我想知道Ansible中的unarchive方法/模块是否存在某些错误。
如果我无法让Ansible中的unarchive正常工作,我的最后选择将是使用Command:"tar -xzvf /tmp/.....",但我不希望这是我的首选方法。

你能提供一个失败的示例任务吗? - Vor
@Vor 这个任务很简单,就像 Ansible 解压模块的例子一样: http://docs.ansible.com/ansible/unarchive_module.html 我忘了使用其中一个选项 (copy=no).. 可能是我的错误。 - AKS
1个回答

18
默认情况下,Unarchive 模块会在本地系统上查找文件,将其复制到远程系统并解压缩。如果您遇到文件未找到的错误,请在任务中指定copy=no

1
确切地说..我也发现了同样的问题:) 默认情况下,unarchive会将文件从本地复制到远程。如果文件已经存在于远程,则指定copy:no。这适用于kitchen,因为kitchen在本地上下文中运行。https://github.com/ansible/ansible/issues/8957 - AKS
谢谢!我在使用 ansible-container 时遇到了问题。 - mblaettermann
哇,我之前一直在努力对抗那种行为!真的很不清楚。谢谢! - MMacphail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接