【问题标题】:Using chef to install windows applications使用 chef 安装 windows 应用程序
【发布时间】:2016-01-13 03:56:14
【问题描述】:

我见过几个使用 Chef Git 资源安装 Windows 应用程序的示例。我对此有两个问题:

安装在 Git 中不可用且在 Chef 社区中没有现有说明书的 Windows 应用程序的最佳做法是什么?

例如下载并安装以静态 URL 托管的 Windows 安装程序?我想我可以将它托管在 git repo 中并将其拉下,但想知道是否有更优雅的方式可以直接从提供程序站点中提取它,类似于 wget?

如何在下载后运行 Windows 安装程序,并提供安装过程中要求的参数?例如什么是windows no compile 相当于:run,“bash[compile_app_name]”,以及如何在厨师食谱中包含安装实用程序(安装目录等)所需的参数?

【问题讨论】:

    标签: chef-infra chef-recipe


    【解决方案1】:

    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) 创建 :install 操作

        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
    

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

    【讨论】:

      【解决方案2】:

      这是迄今为止的“最佳实践”,但我通过here 破解了自己的方式。它主要利用windows cookbook。基本上我阅读了主要的 windows resource docs 并一遍又一遍地运行 chef-client/solo。

      【讨论】:

        【解决方案3】:

        那里的一些现有食谱支持 Windows 平台,但根据我的经验,它们往往有很多错误。我在chocolatey coobook 上取得了更大的成功。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-29
          • 1970-01-01
          • 1970-01-01
          • 2016-11-14
          • 2010-11-20
          • 2016-11-23
          • 1970-01-01
          相关资源
          最近更新 更多