有没有比这更好的方法通过puppet运行SQL脚本?

时间:2014-04-06 09:36:10

标签: sql oracle puppet

查看Get puppet build to fail when the contained SQL script fails execution

我试图运行一个流浪汉版本,它在Ubuntu Virtualbox VM中安装Oracle XE,然后运行一个SQL脚本来初始化Oracle Schema。流浪汉的构建在这里:https://github.com/ajorpheus/vagrant-ubuntu-oracle-xesetup.sql作为oracle模块init.pp的一部分运行(位于底部或搜索'oracle-script')。

当作为vagrant构建的一部分运行SQL脚本时,我看到以下错误:

notice: /Stage[main]/Oracle::Xe/Exec[oracle-script]/returns: Error 6 initializing SQL*Plus
notice: /Stage[main]/Oracle::Xe/Exec[oracle-script]/returns: SP2-0667: Message file sp1<lang>.msb not found
notice: /Stage[main]/Oracle::Xe/Exec[oracle-script]/returns: SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

有两件事对我找到解决问题的方法起了作用:

  1. 正如this回答中所建议的那样,对于所讨论的exec块,将logoutput属性设置为true会立即向我显示错误,而在exec之前只是默默地失败。

  2. 在手动以“vagrant”用户身份登录后,我能够运行命令(sqlplus system/manager@xe < /tmp/setup.sql)似乎很奇怪。这表明环境中缺少某些东西。因此,我复制了所有ORACLE env。如第211行here

  3. 所见,进入执行官

    然而,这有效,手动设置env vars似乎有点脆弱。是否有更好的方法为流浪者用户设置ORACLE环境?或者,有没有办法让puppet为流浪用户设置类似于交互式shell的环境?

1 个答案:

答案 0 :(得分:0)

如果已设置某个配置文件以向用户提供可用的交互式shell,则应该能够通过此类shell传递操作

command => 'bash -i -c "<actual command>"'

关于logoutput,除了你提到的那样 - documentation建议&#34; on_failure&#34;是一个理智的默认值,因为它只会在存在要分析的实际错误时膨胀您的输出。它是Puppet的最新版本中的实际默认值。