2014-02-07 30 views
3

我見過幾個使用Chef Git資源安裝Windows應用程序的例子。我有兩個關於這方面的問題:使用廚師安裝Windows應用程序

安裝在Git中沒有的Windows應用程序的最佳實踐是什麼,並且廚師社區中沒有現有的食譜?

例如下載並安裝託管的Windows安裝程序@靜態URL?我想我可以把它放在一個git倉庫中,然後把它放下來,但是想知道是否有一種更優雅的方式直接從提供商站點將它類似於wget?

下載後,如何運行Windows安裝程序,並提供安裝例程期間請求的參數?例如什麼是windows沒有編譯的等價物:run,「bash [compile_app_name]」,以及在主廚食譜中如何包含安裝實用程序(安裝dir等)所需的參數?

回答

1

這是迄今爲止「最佳實踐」,但我砍了我的方式通過here。它主要利用了windowscookbook。基本上我讀了主要的windows resource docs並一遍又一遍地跑廚師客戶/獨唱。

3

Windows cookbook的確包含windows_package LWRP。該文檔包含幾個示例,包括如何從URL進行安裝。 但是,我發現在某些情況下,它並不總是很好。例如,卸載過程有時會失敗。 在我的食譜中,我使用了家常菜。這並不完美,但它可以讓您對下載和安裝過程有所控制。

(1)定義(或複用)下載機制

def download_from_ftp package 
    ftp_info = data_bag_item(node.chef_environment, 'ftp-credentials')['credentials']['ftp'] 

    ftp_file_path="/#{package}" 
    target = "#{node['downloads']}/#{package}" 

    remote_file "#{target}" do 
    source "ftp://#{ftp_info['user']}:#{ftp_info['password']}@#{ftp_info['host']}/#{ftp_file_path}" 
    action :create_if_missing 
    end 

    target 
end 

(2)創建:安裝操作

action :install do 
     package = "#{new_resource.name}_#{new_resource.build}.exe" 

     location = download_from_ftp(package) 

     execute "install #{new_resource.name}" do 
      command "call #{location} #{dir} /sp /verysilent /suppressmsgboxes" 
     end 
    end 

這是一個有點簡單,但是這是它的要點。

0

那裏有一些現有的食譜支持Windows平臺,但從我的經驗來看,它們往往是非常錯誤的。我已經用chocolatey coobook獲得了更多的成功。