Class: ChefApply::Action::InstallChef::Base
- Inherits:
-
Base
- Object
- Base
- ChefApply::Action::InstallChef::Base
show all
- Defined in:
- lib/chef_apply/action/install_chef/base.rb
Constant Summary
collapse
- MIN_14_VERSION =
Gem::Version.new("14.1.1")
- MIN_13_VERSION =
Gem::Version.new("13.10.0")
Constants inherited
from Base
Base::PATH_MAPPING
Instance Attribute Summary
Attributes inherited from Base
#config, #target_host
Instance Method Summary
collapse
Methods inherited from Base
#escape_windows_path, #initialize, #notify, #run, #run_chef
Instance Method Details
#check_minimum_chef_version!(target) ⇒ Object
#download_to_workstation(url_path) ⇒ Object
98
99
100
101
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 98
def download_to_workstation(url_path)
require "chef_apply/file_fetcher"
ChefApply::FileFetcher.fetch(url_path)
end
|
#install_chef_to_target(remote_path) ⇒ Object
139
140
141
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 139
def install_chef_to_target(remote_path)
raise NotImplementedError
end
|
#lookup_artifact ⇒ Object
59
60
61
62
63
64
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 59
def lookup_artifact
return @artifact_info if @artifact_info
require "mixlib/install"
c = train_to_mixlib(target_host.platform)
Mixlib::Install.new(c).artifact_info
end
|
#name ⇒ Object
34
35
36
37
38
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 34
def name
self.class.name.split("::")[-2..-1].join("::")
end
|
26
27
28
29
30
31
32
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 26
def perform_action
if check_minimum_chef_version!(target_host) == :minimum_version_met
notify(:already_installed)
else
perform_local_install
end
end
|
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 44
def perform_local_install
package = lookup_artifact()
notify(:downloading)
local_path = download_to_workstation(package.url)
notify(:uploading)
remote_path = upload_to_target(local_path)
notify(:installing)
install_chef_to_target(remote_path)
notify(:install_complete)
end
|
55
56
57
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 55
def perform_remote_install
raise NotImplementedError
end
|
#setup_remote_temp_path ⇒ Object
135
136
137
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 135
def setup_remote_temp_path
raise NotImplementedError
end
|
#train_to_mixlib(platform) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 70
def train_to_mixlib(platform)
opts = {
platform_version: platform.release,
platform: platform.name,
architecture: platform.arch,
product_name: "chef",
product_version: :latest,
channel: :stable,
platform_version_compatibility_mode: true
}
case platform.name
when /windows/
opts[:platform] = "windows"
when "redhat", "centos"
opts[:platform] = "el"
when "suse"
opts[:platform] = "sles"
when "amazon"
opts[:platform] = "el"
if platform.release.to_i > 2010 opts[:platform_version] = "6"
else
opts[:platform_version] = "7"
end
end
opts
end
|
#upgrading? ⇒ Boolean
40
41
42
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 40
def upgrading?
@upgrading
end
|
#upload_to_target(local_path) ⇒ Object
103
104
105
106
107
108
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 103
def upload_to_target(local_path)
installer_dir = setup_remote_temp_path()
remote_path = File.join(installer_dir, File.basename(local_path))
target_host.upload_file(local_path, remote_path)
remote_path
end
|
#version_to_install ⇒ Object
66
67
68
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 66
def version_to_install
lookup_artifact.version
end
|