我有一个可以调用2个角色的ansible剧本。角色1在本地运行,其中有一个脚本,其中arg为文件路径/tmp/inputfile/input.csv。该剧本看起来:
- hosts: "{{my_extra_var_IP}}"
connection: local
roles:
- prereq
角色任务:
- name: Copy script to local
copy:
src: files/csv_to_files.sh
dest: /tmp/input_dir/
mode: 0777
- command: ls -ltr /tmp/input_dir
- command: cat /tmp/input_dir/inputFile.csv
#- name: run csv to yml script
# script: /tmp/input_dir/csv_to_files.sh /tmp/input_dir/inputFile.csv
# become_user: niceha
前2个任务的输出是成功的,并且正如预期的那样,但是在第3和第3个任务中。第四步我得到错误:
FAILED! => {"changed": true, "cmd": ["cat", "/tmp/input_dir/inputFile.csv"], "delta": "0:00:00.007141", "end": "2017-06-09 15:53:58.673450", "failed": true, "rc": 1, "start": "2017-06-09 15:53:58.666309", "stderr": "cat: /tmp/input_dir/inputFile.csv: No such file or directory", "stdout": "", "stdout_lines": [], "warnings": []}
我在使用userA的塔上运行这个工作我也试图改变用户但没有运气。
答案 0 :(得分:0)
缩进看起来不正确:
- name: Copy script to local
copy:
src: files/csv_to_files.sh
dest: /tmp/input_dir/
mode: 0777
答案 1 :(得分:0)
确定。因此,经过多次阅读后,我知道代码很好,因为它从控制台运行而不是从Ansible塔运行,只是交叉检查它是从其他目录路径工作。 Ansible塔实际上使用/ tmp / dir作为暂存区域,因此在tmp目录中运行的任何更改/任务都不会生效。
将我的输入文件路径从/ tmp更改为/ home / user为我做了工作。