【问题标题】:Chef recipe resource how to run recipe/resource only after completing oracle setup.exe is run completely厨师食谱资源如何在完成 oracle setup.exe 完全运行后才运行食谱/资源
【发布时间】:2019-02-15 13:46:24
【问题描述】:

我正在编写一个厨师食谱来安装 Oracle EE 软件(通过在静默模式下运行 setup.exe)使用厨师资源“执行”,如下所示。


str_command = "<dir>/setup.exe -silent -nowait -noconfig  -waitforcompletion ORACLE_HOME=... ORACLE_BASE=... " # other parameters for silent installation

Chef::Log.info("-before-")
execute 'install_oracle_ee' do
    command str_command
    live_stream true
    timeout "#{node['mycookbk']['timeout']['num']}"
    not_if {File.exists?("#{node['mycookbk']['oracle']['oracle_home']}/bin")}
end
Chef::Log.info("-after-")

软件安装成功后我需要执行“创建数据库实例”然后“创建数据库”的资源/配方。


当前执行的资源在运行命令后存在,直接移动到运行列表中的下一个资源/配方。

但我需要确保设置已完成,然后再执行此操作。谁能建议一种方法来做到这一点?

【问题讨论】:

    标签: oracle installation chef-infra oracle12c chef-recipe


    【解决方案1】:

    这意味着该命令实际上并没有等待完成。 Chef 确实等待提供的可执行文件完成(实际上它必须等待,没有不这样做的选项)。仔细检查安装程序的 CLI 选项?

    【讨论】:

    • 您好,感谢您的回复。厨师实际上没有。它将简单地打印 -before- 和 -after- 然后继续下一个资源/食谱。它不会等到命令(设置执行)完成。它是在后台运行的,所以厨师不知道发生了什么。
    • 这不相关,您混淆了编译时间和收敛时间。这些日志语句在编译时运行,在 任何 资源之前(除了那些专门被破解在编译时运行的)。
    • 这是我第一次使用厨师。奇怪的是它在编译时执行日志语句。因此,如果在“执行”资源执行期间触发了 setup.exe,下一个资源的命令会等到前一个资源完成吗?
    • 它在编译时运行配方基础级别的所有代码。详情请见coderanger.net/two-pass
    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多