2016-06-17 79 views
0

当我发出psql命令像这样在我的剧本:为什么命令模块为psql挂?

- name: Run psql to pull in initial config data 
    become_method: sudo 
    become: yes 
    become_user: postgres 
    command: psql -U postgres -w eclaim < /opt/eclaim_revamp/sql_scripts/initial_config.sql 

它永远来完成,看起来好像挂起,但是当我使用shell,它可以打通:

- name: Run psql to pull in initial data 
    become_method: sudo 
    become: yes 
    become_user: postgres 
    shell: psql -U postgres -w eclaim < /opt/eclaim_revamp/sql_scripts/initial_sql_script.sql 

有人可以告诉我为什么吗?

回答

2

documentation

[给定的命令]将不会通过所述外壳被加工,所以像$ HOME变量和操作,如 “<”, “>”, “|”,和“& “将不起作用(如果您需要这些功能,请使用外壳模块)。

+0

为了补充为什么导致观察到的行为,命令没有通过输入文件输入,所以Postgres只是在等待输入。 –