puppet は、呼び出されたプログラムのリターン コードに基づいて、スクリプトの成功を検出すると思います。デフォルトでは、セッション中に何が実行されたかに関係なく、sqlplus を閉じると 0 が返されます。
[[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Thu Apr 17 08:47:08 2014 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select asdjkhasd from sadbjaksd; select asdjkhasd from sadbjaksd * ERROR at line 1: ORA-00942: table or view does not exist SQL> quit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [[email protected] ~]$ echo $? 0
プレ>sqlplus をエラー状態で終了させたい場合は、everyone コマンドを使用できます。
[[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Thu Apr 17 08:48:17 2014 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> whenever sqlerror exit failure; SQL> select bogus from nowhere; select bogus from nowhere * ERROR at line 1: ORA-00942: table or view does not exist Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [[email protected] ~]$ echo $? 1
プレ>後者の場合はリターン コードが異なることに注意してください。コマンドが失敗したことを puppet に知らせるには、これで十分です。