Ansible:是否可以使用本地文件提供远程任务(避免首先上传文件)

时间:2014-03-19 22:58:56

标签: ansible ansible-playbook

假设我有这个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

1 个答案:

答案 0 :(得分:0)

您可能想查看script模块。传输后,模块在远程节点上运行本地脚本。

script模块获取脚本名称,后跟空格分隔的参数列表。路径中的本地脚本将传输到远程节点,然后执行。给定的脚本将通过远程节点上的shell环境进行处理。

但是,使用此模块,您必须先将对psql的调用添加到脚本文件中。 See here for more info