最近我们切换到 Ansible 自动化平台 2.3。我的执行环境是ee-supported-rhel8,其中包含 Ansible.posix.synchronize 模块。
当我执行同步模块时,它失败并显示:
“src:/tmp/memo.txt 没有这样的文件”。
它在 Tower 1.2 中运行没有任何问题。
- Name: Install rsync on the Target
package:
name: rsync
state: present
- Name: Synchronize file from local to remote
synchronize:
src: /tmp/memo.txt
dest: /temp/test
错误
“命令”:
"/usr/bin/rsync --delay-updates -F --compress --archive --rsh='/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' --out-format='<<CHANGED>>%i %n%L' /tmp/memo.txt root@xyz1234:/tmp/test"
,
"msg": "警告:已将 'xyz1234,148.168.65.73' (ECDSA) 永久添加到已知主机列表中。 \r\n警告!\n 此系统...有关其他信息,请参阅当地企业的员工隐私声明或联系您的本地隐私官。\nrsync:link_stat“/tmp/memo.txt”失败:没有此类文件或目录 (2)\nrsync 错误:main.c 处的某些文件/属性未传输(请参阅以前的错误)(代码 23) (1189) [发件人=3.1.3]\n",
我将源文件保留在控制节点和执行节点中,但它仍然失败。
我还将源代码保存在单独的远程服务器中。这也是失败的。它抛出错误,源和目标都不能位于远程。
请建议。
错误说:
简短回答:控制器上缺少文件/tmp/memo.txt 。
详细信息:第一个示例展示了如何使用该模块
例如下面的播放
将控制器上的文件/tmp/memo.txt同步到远程主机test_01上的文件/tmp/test。给定控制器上的文件
确保文件已同步到远程主机
可以通过从控制器中删除文件/tmp/memo.txt来重现该错误:
我找到了解决方案。
AAP 使用作为容器的执行环境。如果容器不知道 /tmp/memo.txt ,任务将失败。
如果要同步的文件是包含 playbook 的项目的一部分,则它存在于容器内。如果要同步的文件/文件夹驻留在其他地方,您需要将该任务委派给您要同步的文件/文件夹所在的源系统。
谢谢您的帮助