0

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

1 回答 1

0

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

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

然而,使用这个模块,您必须首先将您对 psql 的调用添加到脚本文件中。请参阅此处了解更多信息

于 2014-03-20T03:09:29.600 回答