假设我有这个Ansible任务:
- name: Run ETL 2
shell: psql -U {{dbuser}} -d {{dbname}} -f /tmp/data-cleansing2.sql
sudo_user: postgres
我有很多这样的人,我首先要上传文件
- name: Upload ETL script
copy: src=../data-cleansing2.sql /tmp/data-cleansing2.sql
如果有办法告诉ansible它必须首先上传文件,那将是很好的,例如:
- name: Run ETL 2
shell: psql -U {{dbuser}} -d {{dbname}} -f {{/abc/xyz.sql | upload_file}}
sudo_user: postgres
答案 0 :(得分:0)
您可能想查看script
模块。传输后,模块在远程节点上运行本地脚本。
script
模块获取脚本名称,后跟空格分隔的参数列表。路径中的本地脚本将传输到远程节点,然后执行。给定的脚本将通过远程节点上的shell环境进行处理。
但是,使用此模块,您必须先将对psql的调用添加到脚本文件中。 See here for more info