簡體   English   中英

如何使用 Chef 檢查 Java 是否安裝在 Windows 上

[英]How to check if Java is installed on Windows using Chef

我正在嘗試更新我們的食譜以確認 Java 在 Windows 服務器上是否可用。 我不在乎它是 Oracle Java、OpenJDK 還是其他什么。 無論 Java 存在是無關緊要的,我需要知道 Java 在運行服務塊之前存在,因為我的食譜安裝的應用程序是依賴的,用戶群可以決定安裝 ZD52387880E75EA228817A72D。 Java choices available right now to the user base are Oracle Java and Azul Zulu Java, and that could change in the future.

我想到了 not_if、only_if 等,但由於它嘗試啟動服務,cookbook 仍然失敗,而且我知道我的測試實例沒有 Java(故意作為測試)。

不確定它是否有助於回答,但到目前為止,我啟動服務的代碼是:

  service 'MyApp' do
    action %i[enable start]
    not_if { ::File.exist?("#{install_dir}\\scripts\\instance-stopped") }
  end

如果 Java 在服務器上,這很有效,但是一旦刪除 Java 元素,食譜就會失敗。 執行“安裝”步驟有效,實際安裝軟件不需要 Java,但運行應用程序需要它。

你能提供的任何幫助都會很棒。

您可以采取兩種方法...

推薦的方法是讓您的配方始終安裝 java。 由於廚師的性質(冪等性),如果 java 已經安裝,廚師將跳過 java 安裝。

另一種選擇是有一個防護裝置(正如您已經使用過的那樣)來檢查是否安裝了 java。 檢查 java 是否安裝最直接的方法是測試java命令是否有效。

不幸的是,我不能選擇部署 Java,因為我處理的各個項目團隊可以選擇部署四個單獨的包中的任何一個,每個包都由我們的內部合規團隊定義為有效,以滿足他們的個人項目需求。

我已經走上了使用shell_out運行“java -version”的路線。 這是通過對可用選項的更多挖掘發現的: 如何檢查安裝了哪個 java 版本

我還沒有創建一個 ohai function,我使用了我在那里看到的內容並創建了一個設置名為java_version的變量,在配方開始時初始化為“none”。 然后運行 ohai function 的修改片段以僅使用來自shell_out調用的版本值(如果有)覆蓋java_version var 的值。

然后我有一個警衛,使用unless來檢查java_version是否設置為“none”。 如果是,則跳過處理,否則啟動我的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM