Sha256: f575f10125a9912206df0fbf9a87f75a0ce3a9e451e954b8f63abecc73eb5fcc

Contents?: true

Size: 1.69 KB

Versions: 6

Compression:

Stored size: 1.69 KB

Contents

require 'chef_metal/convergence_strategy/precreate_chef_objects'
require 'pathname'

module ChefMetal
  class ConvergenceStrategy
    class InstallMsi < PrecreateChefObjects
      @@install_msi_cache = {}

      def initialize(options = {})
        @install_msi_url = options[:install_msi_url] || 'http://www.opscode.com/chef/install.msi'
        @install_msi_path = options[:install_msi_path] || "%TEMP%\\#{File.basename(@install_msi_url)}"
      end

      attr_reader :install_msi_url
      attr_reader :install_msi_path

      def setup_convergence(provider, machine, machine_resource)
        system_drive = machine.execute_always('$env:SystemDrive').stdout.strip
        @client_rb_path ||= "#{system_drive}\\chef\\client.rb"
        @client_pem_path ||= "#{system_drive}\\chef\\client.pem"

        super

        # Install chef-client.  TODO check and update version if not latest / not desired
        if machine.execute_always('chef-client -v').exitstatus != 0
          # TODO ssh verification of install.sh before running arbtrary code would be nice?
          # TODO find a way to cache this on the host like with the Unix stuff.
          # Limiter is we don't know how to efficiently upload large files to
          # the remote machine with WMI.
          machine.execute(provider, "(New-Object System.Net.WebClient).DownloadFile(#{machine.escape(install_msi_url)}, #{machine.escape(install_msi_path)})")
          machine.execute(provider, "msiexec /qn /i #{machine.escape(install_msi_path)}")
        end
      end

      def converge(provider, machine)
        # TODO For some reason I get a 500 back if I don't do -l debug
        machine.transport.execute("chef-client -l debug")
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
chef-metal-0.4 lib/chef_metal/convergence_strategy/install_msi.rb
chef-metal-0.3.1 lib/chef_metal/convergence_strategy/install_msi.rb
chef-metal-0.3 lib/chef_metal/convergence_strategy/install_msi.rb
chef-metal-0.2.1 lib/chef_metal/convergence_strategy/install_msi.rb
chef-metal-0.2 lib/chef_metal/convergence_strategy/install_msi.rb
chef-metal-0.1 lib/chef_metal/convergence_strategy/install_msi.rb