需要使用ansible运行一些db脚本。但db脚本在执行时调用其他脚本

时间:2017-11-30 12:18:03

标签: ansible

使用复制模块将脚本复制到目标服务器。但是在使用ansible时脚本没有执行,并且能够在服务器端手动执行。

将脚本复制到db server中的/home/oracle/SCRIPTS中 在此目录下,存在名为 test.sql 的脚本和名为 TEST 的目录。  test.sql脚本如下:

@TEST/TEST_USER.sql

并且在TEST目录下存在具有以下内容的另一个脚本( TEST_USER.sql ):

CREATE USER TEST
  IDENTIFIED BY password1
  DEFAULT TABLESPACE USERS
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;

我的ansible剧本看起来像:

  - name: Connecting DB
    shell: sqlplus username/password @/home/oracle/SCRIPTS/test.sql
    environment:
      ORACLE_HOME: /u01/app/oracle/product/12.1.0/dbhome_2
      HOME: /home/oracle
      PATH: /u01/app/oracle/product/12.1.0/dbhome_2/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin
      ORACLE_SID: <SID NAME>
    register: sqlout

  - debug:
     var: sqlout.stdout_lines

任何帮助都会得到赞赏。 谢谢!

1 个答案:

答案 0 :(得分:0)

在使用shell模块时,可以使用 chdir 参数(参见http://docs.ansible.com/ansible/latest/shell_module.html

问候