使用chef安装Windows应用程序

时间:2014-02-07 14:04:35

标签: chef chef-recipe

我已经看到了几个使用Chef Git资源安装Windows应用程序的示例。我有两个问题:

安装Git中没有的Windows应用程序并且Chef社区中没有现有的cookbook的最佳做法是什么?

e.g。下载并安装托管@静态URL的Windows安装程序?我想我可以把它放在一个git repo中并将其拉下来,但是想知道是否有一种更优雅的方式直接从提供者网站中提取它类似于wget?

如何在下载后运行Windows安装程序,并提供安装例程期间请求的参数?例如什么是Windows没有编译等效的:运行,“bash [compile_app_name]”,以及如何在主厨食谱中包含安装实用程序(安装目录等)所需的参数?

3 个答案:

答案 0 :(得分: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

它有点简化,但这是它的要点。

答案 1 :(得分:1)

到目前为止,这是“最佳做法”,但我在here进行了攻击。它主要利用windows cookbook。基本上我读了主windows resource docs并一遍又一遍地运行chef-client / solo。

答案 2 :(得分:0)

其中一些现有的烹饪书支持Windows平台,但根据我的经验,它们往往是非常错误的。我在chocolatey coobook上取得了更大的成功。