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_CHEF_VERSION =
Gem::Version.new("13.0.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
#download_to_workstation(url_path) ⇒ Object
107
108
109
110
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 107
def download_to_workstation(url_path)
require "chef_apply/file_fetcher"
ChefApply::FileFetcher.fetch(url_path)
end
|
#install_chef_to_target(remote_path) ⇒ Object
123
124
125
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 123
def install_chef_to_target(remote_path)
raise NotImplementedError
end
|
#lookup_artifact ⇒ Object
68
69
70
71
72
73
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 68
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
43
44
45
46
47
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 43
def name
self.class.name.split("::")[-2..-1].join("::")
end
|
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 53
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
|
64
65
66
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 64
def perform_remote_install
raise NotImplementedError
end
|
#setup_remote_temp_path ⇒ Object
119
120
121
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 119
def setup_remote_temp_path
raise NotImplementedError
end
|
#train_to_mixlib(platform) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 79
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
49
50
51
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 49
def upgrading?
@upgrading
end
|
#upload_to_target(local_path) ⇒ Object
112
113
114
115
116
117
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 112
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
75
76
77
|
# File 'lib/chef_apply/action/install_chef/base.rb', line 75
def version_to_install
lookup_artifact.version
end
|