在具有 Ansible 2.9.25、Python 2.7.5、Ansible Tower 3.7.x 的 RHEL 7.9.9 系统上,Tower 服务器上的用户在 CLI 上的临时获取任务的输出如下所示
ansible test --user ${USER} --ask-pass --module-name fetch --args "src=/home/{{ ansible_user }}/test.txt dest=/tmp/ flat=yes"
SSH password:
test1.example.com | CHANGED => {
"changed": true,
"checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83",
"dest": "/tmp/test.txt",
"md5sum": "d8e8fca2dc0f896fd7cb4cb0031ba249",
"remote_checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83",
"remote_md5sum": null
}
test2.example.com | FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"msg": "file not found: /home/user/test.txt"
}
文件就留在那儿了。但该命令是在用户下启动并执行的。
与带有参数的临时命令一样从 Ansible Tower 执行src=/home/user/test.txt dest=/tmp/ flat=yes
报道
test2.example.com | FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"msg": "file not found: /home/user/test.txt"
}
test1.example..com | CHANGED => {
"changed": true,
"checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83",
"dest": "/tmp/test.txt",
"md5sum": "d8e8fca2dc0f896fd7cb4cb0031ba249",
"remote_checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83",
"remote_md5sum": null
}
你的观察是正确的,Ansible Tower 上没有文件(awx
) 服务器。如果已有文件,则将目标目录更改为报告的用户
}
test1.example.com | FAILED! => {
"changed": false,
"checksum": null,
"dest": "/home/user/test.txt",
"file": "/home/user/test.txt",
"md5sum": null,
"msg": "checksum mismatch",
"remote_checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83",
"remote_md5sum": null
}
已经有一个文件了。但是,如果没有文件,它也会失败。
将目标目录更改为 Ansible Tower 下运行的用户后(awx
) 通过参数src=/home/user/test.txt dest=/home/awx/ flat=yes
test1.example.com | CHANGED => {
"changed": true,
"checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83",
"dest": "/home/awx/test.txt",
"md5sum": "d8e8fca2dc0f896fd7cb4cb0031ba249",
"remote_checksum": "4e1243bd22c66e76c2ba9eddc1f91394e57f9f83",
"remote_md5sum": null
}
文件正确地留在那里
ls -al /home/awx/
-rw-r--r--. 1 awx awx 5 Nov 6 10:42 test.txt
关于
问题是无论我将目标指向 Ansible 服务器上的哪个位置,文件实际上都不会写入那里。 ... 任何意见,将不胜感激。 ...
看起来它是由用户上下文和缺少访问/写入权限以及可能其他观察结果引起的,例如“事实证明,Ansible Tower 实际上并没有将文件获取到自身,而只是将它们复制到远程服务器上的临时目录” https://stackoverflow.com/a/66478587/6771046.