使用复制模块将脚本复制到目标服务器。但是在使用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
任何帮助都会得到赞赏。 谢谢!
答案 0 :(得分:0)
在使用shell模块时,可以使用 chdir 参数(参见http://docs.ansible.com/ansible/latest/shell_module.html)
问候