Class: ChefApply::Action::InstallChef
- Inherits:
-
Base
- Object
- Base
- ChefApply::Action::InstallChef
show all
- Defined in:
- lib/chef_apply/action/install_chef.rb,
lib/chef_apply/action/install_chef/minimum_chef_version.rb
Defined Under Namespace
Classes: MinimumChefVersion
Instance Attribute Summary
Attributes inherited from Base
#config, #target_host
Instance Method Summary
collapse
Methods inherited from Base
#name, #notify, #run
Constructor Details
#initialize(opts = { check_only: false }) ⇒ InstallChef
Returns a new instance of InstallChef.
25
26
27
|
# File 'lib/chef_apply/action/install_chef.rb', line 25
def initialize(opts = { check_only: false })
super
end
|
Instance Method Details
#download_to_workstation(url_path) ⇒ Object
106
107
108
109
|
# File 'lib/chef_apply/action/install_chef.rb', line 106
def download_to_workstation(url_path)
require_relative "../file_fetcher"
ChefApply::FileFetcher.fetch(url_path)
end
|
#lookup_artifact ⇒ Object
66
67
68
69
70
71
72
|
# File 'lib/chef_apply/action/install_chef.rb', line 66
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
|
29
30
31
32
33
34
35
|
# File 'lib/chef_apply/action/install_chef.rb', line 29
def perform_action
if InstallChef::MinimumChefVersion.check!(target_host, config[:check_only]) == :minimum_version_met
notify(:already_installed)
else
perform_local_install
end
end
|
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/chef_apply/action/install_chef.rb', line 41
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)
target_host.install_package(remote_path)
notify(:install_complete)
end
|
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/chef_apply/action/install_chef.rb', line 52
def perform_remote_install
raise NotImplementedError
end
|
#train_to_mixlib(platform) ⇒ Object
78
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
|
# File 'lib/chef_apply/action/install_chef.rb', line 78
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
37
38
39
|
# File 'lib/chef_apply/action/install_chef.rb', line 37
def upgrading?
@upgrading
end
|
#upload_to_target(local_path) ⇒ Object
111
112
113
114
115
116
|
# File 'lib/chef_apply/action/install_chef.rb', line 111
def upload_to_target(local_path)
installer_dir = target_host.temp_dir
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
74
75
76
|
# File 'lib/chef_apply/action/install_chef.rb', line 74
def version_to_install
lookup_artifact.version
end
|