【问题标题】:chef windows_package guards exists?厨师 windows_package 后卫存在吗?
【发布时间】:2017-08-17 14:16:42
【问题描述】:

我有一个在 windows 机器上安装 jdk 8 的 windows_package 资源,它看起来像这样:

java_source="C:\\chef_solo\\utils\\jdk-8u121-windows-x64.exe"
package_name="Java(TM) SE Development Kit 8 (64-bit)"
windows_package package_name do
  source java_source
  action :install
  installer_type :custom
  options "/s #{additional_options}"
end

问题是每个厨师都运行,它安装相同的 jdk,第二次安装后,java 不再工作。

我一直在寻找windows_package 守卫,但找不到。那是因为它们不存在?

无论如何,我找到了一些检查 java 是否存在的 powershell 解决方案,我需要知道我是否可以以某种方式使用它们作为我的windows_package 安装的保护。

解决方案在这里: How to get the Java version in PowerShell

【问题讨论】:

    标签: windows powershell chef-infra guard


    【解决方案1】:

    Guard 子句是所有资源都可用的核心功能,因此没有任何特定于 windows_package 的内容可供查找。您可以在 Chef 文档中找到有关 not_ifonly_ifguard_interpreter 的详细信息。

    【讨论】:

      【解决方案2】:

      所以,按照@coderanger 的思路,最终的结果就是这个:

      windows_package package_name do
        source java_source
        action :install
        installer_type :custom
        options "/s #{additional_options}"
        guard_interpreter :powershell_script
        only_if "!(dir 'HKLM:\\SOFTWARE\\JavaSoft\\Java Runtime Environment'  | select -expa pschildname -Last 1)"
      end
      

      如果您有更好的解决方案,请告诉我。

      谢谢。

      【讨论】:

        猜你喜欢
        • 2017-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多