chef-apply 0.6.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/chef-apply.gemspec +1 -1
- data/i18n/en.yml +18 -25
- data/i18n/errors/en.yml +5 -5
- data/lib/chef_apply/action/base.rb +9 -9
- data/lib/chef_apply/action/install_chef.rb +2 -1
- data/lib/chef_apply/action/install_chef/minimum_chef_version.rb +4 -0
- data/lib/chef_apply/cli.rb +5 -5
- data/lib/chef_apply/file_fetcher.rb +17 -17
- data/lib/chef_apply/target_host.rb +6 -2
- data/lib/chef_apply/target_host/solaris.rb +55 -0
- data/lib/chef_apply/ui/terminal.rb +0 -1
- data/lib/chef_apply/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dcf42f06fe2a7733f4c9755f5cd02b965f45b31e7666db57345b48f0e9692d54
|
|
4
|
+
data.tar.gz: f667eca9ca4afb06480ba754c3de012eb7435c3d1552142e7dbd491c124bf441
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 47f31dfb20d1562308d4b2735f8f3f225bf7de794e2fcbb47c7d6cff362d763df7681bf4ed005aec0d74816570e7caa39f164aabdaadca1172db25ab0b8fc7e4
|
|
7
|
+
data.tar.gz: 7b4d37d955d6faa57c8314e6d9fd116b850ca76e78bbbdca506a4b51942fa5daed30d5b0cd310c6e89e34047583d5ab23f813c9775065da035c215095e7462f7
|
data/Gemfile
CHANGED
data/chef-apply.gemspec
CHANGED
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.description = "Ad-hoc management of individual nodes and devices."
|
|
30
30
|
spec.homepage = "https://github.com/chef/chef-apply"
|
|
31
31
|
spec.license = "Apache-2.0"
|
|
32
|
-
spec.required_ruby_version = ">= 2.
|
|
32
|
+
spec.required_ruby_version = ">= 2.7"
|
|
33
33
|
|
|
34
34
|
spec.files = %w{Rakefile LICENSE warning.txt} +
|
|
35
35
|
Dir.glob("Gemfile*") + # Includes Gemfile and locks
|
data/i18n/en.yml
CHANGED
|
@@ -17,21 +17,14 @@
|
|
|
17
17
|
|
|
18
18
|
cli:
|
|
19
19
|
telemetry_enabled: |
|
|
20
|
-
Telemetry
|
|
21
|
-
|
|
22
|
-
determine how we can impove your chef-run experience.
|
|
20
|
+
Telemetry is enabled by default in chef-run. The anonymous data we gather
|
|
21
|
+
is used to determine how we can impove your chef-run experience.
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
[telemetry]
|
|
28
|
-
enabled=false
|
|
29
|
-
|
|
30
|
-
For more information about what we data gather and additional opt-out
|
|
31
|
-
options, visit https://docs.chef.io/workstation/privacy/
|
|
23
|
+
For more information about what we data gather and opt-out options,
|
|
24
|
+
visit https://docs.chef.io/workstation/privacy/
|
|
32
25
|
|
|
33
26
|
description: |
|
|
34
|
-
Chef Run is a tool to execute ad-hoc tasks using Chef.
|
|
27
|
+
Chef Run is a tool to execute ad-hoc tasks using Chef Infra.
|
|
35
28
|
creating_config: "Creating config file in %1."
|
|
36
29
|
default_config_location: "Location of config file. Default: %1"
|
|
37
30
|
identity_file: "SSH identity file to use when connecting. Keys loaded into ssh-agent will also be used."
|
|
@@ -44,9 +37,9 @@ cli:
|
|
|
44
37
|
Current default: %1
|
|
45
38
|
cookbook_repo_paths: "Comma separated list of cookbook repository paths."
|
|
46
39
|
install_description: |
|
|
47
|
-
Install Chef
|
|
40
|
+
Install Chef Infra Client on the target host(s) if it is not installed.
|
|
48
41
|
This defaults to enabled - the installation will be performed
|
|
49
|
-
if there is no Chef
|
|
42
|
+
if there is no Chef Infra Client on the target(s).
|
|
50
43
|
user_description: |
|
|
51
44
|
Username to use for authentication to the target(s). The same
|
|
52
45
|
username will be used for all targets.
|
|
@@ -102,7 +95,7 @@ cli:
|
|
|
102
95
|
in the form:
|
|
103
96
|
|
|
104
97
|
ssh://[USERNAME]@example.com[:PORT]
|
|
105
|
-
<RESOURCE> A Chef resource, such as 'user' or 'package'
|
|
98
|
+
<RESOURCE> A Chef Infra resource, such as 'user' or 'package'
|
|
106
99
|
<RESOURCE_NAME> The name, usually used to specify what 'thing' to set up with
|
|
107
100
|
the resource. For example, given resource 'user', 'name' would be
|
|
108
101
|
the name of the user you wanted to create.
|
|
@@ -179,16 +172,16 @@ status:
|
|
|
179
172
|
exporting: Generating local policyfile... exporting...
|
|
180
173
|
success: Generating local policyfile... exporting... done!
|
|
181
174
|
install_chef:
|
|
182
|
-
checking_for_client: Checking for Chef
|
|
183
|
-
verifying: Verifying Chef
|
|
184
|
-
downloading: Downloading Chef
|
|
185
|
-
uploading: Uploading Chef
|
|
186
|
-
installing: Installing Chef
|
|
187
|
-
upgrading: Upgrading Chef
|
|
188
|
-
already_present: Chef
|
|
189
|
-
install_success: Successfully installed Chef
|
|
190
|
-
upgrade_success: Successfully upgraded Chef
|
|
191
|
-
failure: "An error occurred while installing Chef
|
|
175
|
+
checking_for_client: Checking for Chef Infra Client.
|
|
176
|
+
verifying: Verifying Chef Infra Client installation.
|
|
177
|
+
downloading: Downloading Chef Infra Client installer into local cache.
|
|
178
|
+
uploading: Uploading Chef Infra Client installer to target.
|
|
179
|
+
installing: Installing Chef Infra Client version %1.
|
|
180
|
+
upgrading: Upgrading Chef Infra Client from version %1 to %2.
|
|
181
|
+
already_present: Chef Infra Client version %1 already installed on target.
|
|
182
|
+
install_success: Successfully installed Chef Infra Client version %1
|
|
183
|
+
upgrade_success: Successfully upgraded Chef Infra Client from version %1 to %2.
|
|
184
|
+
failure: "An error occurred while installing Chef Infra Client: %1"
|
|
192
185
|
converge:
|
|
193
186
|
header: !!pl
|
|
194
187
|
1: Applying %2 from %3 to target.
|
data/i18n/errors/en.yml
CHANGED
|
@@ -71,8 +71,8 @@ errors:
|
|
|
71
71
|
text: |
|
|
72
72
|
The target does not have chef-client installed.
|
|
73
73
|
|
|
74
|
-
This command is powered by the Chef
|
|
75
|
-
on this node, the Chef
|
|
74
|
+
This command is powered by the Chef Infra Client. In order to make use of it
|
|
75
|
+
on this node, the Chef Infra Client must be installed first.
|
|
76
76
|
|
|
77
77
|
Re-running this command without the '--no-install' flag will
|
|
78
78
|
automatically perform the installation.
|
|
@@ -91,12 +91,12 @@ errors:
|
|
|
91
91
|
|
|
92
92
|
CHEFINS003:
|
|
93
93
|
text: |
|
|
94
|
-
The target has an older version of Chef
|
|
94
|
+
The target has an older version of Chef Infra Client installed.
|
|
95
95
|
|
|
96
96
|
The target has version %1 installed, but this command
|
|
97
97
|
requires a minimum version of %2.
|
|
98
98
|
|
|
99
|
-
Please upgrade the Chef
|
|
99
|
+
Please upgrade the Chef Infra Client on this node to version %2 or later.
|
|
100
100
|
|
|
101
101
|
# Local errors trying to create policy to send to target
|
|
102
102
|
CHEFPOLICY001:
|
|
@@ -240,7 +240,7 @@ errors:
|
|
|
240
240
|
|
|
241
241
|
Try...
|
|
242
242
|
- Provide a password with "--password PASSWORD"
|
|
243
|
-
- Provide a key with "
|
|
243
|
+
- Provide a key with "--identity-file PATH/TO/FILE"
|
|
244
244
|
- Enable ssh-agent and add keys
|
|
245
245
|
- Add a host entry to your ssh configuration
|
|
246
246
|
|
|
@@ -41,15 +41,15 @@ module ChefApply
|
|
|
41
41
|
def run(&block)
|
|
42
42
|
@notification_handler = block
|
|
43
43
|
Telemeter.timed_action_capture(self) do
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
|
|
45
|
+
perform_action
|
|
46
|
+
rescue StandardError => e
|
|
47
|
+
# Give the caller a chance to clean up - if an exception is
|
|
48
|
+
# raised it'll otherwise get routed through the executing thread,
|
|
49
|
+
# providing no means of feedback for the caller's current task.
|
|
50
|
+
notify(:error, e)
|
|
51
|
+
@error = e
|
|
52
|
+
|
|
53
53
|
end
|
|
54
54
|
# Raise outside the block to ensure that the telemetry cpature completes
|
|
55
55
|
raise @error unless @error.nil?
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
# See the License for the specific language governing permissions and
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
#
|
|
17
|
-
|
|
18
17
|
require_relative "base"
|
|
19
18
|
require_relative "install_chef/minimum_chef_version"
|
|
20
19
|
require "fileutils" unless defined?(FileUtils)
|
|
@@ -98,6 +97,8 @@ module ChefApply
|
|
|
98
97
|
opts[:platform] = "el"
|
|
99
98
|
when "suse"
|
|
100
99
|
opts[:platform] = "sles"
|
|
100
|
+
when "solaris"
|
|
101
|
+
opts[:platform] = "solaris2"
|
|
101
102
|
when "amazon"
|
|
102
103
|
opts[:platform] = "el"
|
|
103
104
|
if platform.release.to_i > 2010 # legacy Amazon version 1
|
data/lib/chef_apply/cli.rb
CHANGED
|
@@ -69,11 +69,11 @@ module ChefApply
|
|
|
69
69
|
# they will be captured in the same telemetry session.
|
|
70
70
|
|
|
71
71
|
Chef::Telemeter.timed_run_capture([:redacted]) do
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
|
|
73
|
+
perform_run(enforce_license: enforce_license)
|
|
74
|
+
rescue Exception => e
|
|
75
|
+
@rc = handle_run_error(e)
|
|
76
|
+
|
|
77
77
|
end
|
|
78
78
|
rescue => e # can occur if exception thrown in error handling
|
|
79
79
|
@rc = handle_run_error(e)
|
|
@@ -44,25 +44,25 @@ module ChefApply
|
|
|
44
44
|
file = open(temp_path, "wb")
|
|
45
45
|
ChefApply::Log.debug "Downloading: #{temp_path}"
|
|
46
46
|
Net::HTTP.start(url.host) do |http|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
rescue e
|
|
54
|
-
@error = true
|
|
55
|
-
raise
|
|
56
|
-
ensure
|
|
57
|
-
file.close
|
|
58
|
-
# If any failures occurred, don't risk keeping
|
|
59
|
-
# an incomplete download that we'll see as 'cached'
|
|
60
|
-
if @error
|
|
61
|
-
FileUtils.rm_f(temp_path)
|
|
62
|
-
else
|
|
63
|
-
FileUtils.mv(temp_path, local_path)
|
|
47
|
+
|
|
48
|
+
http.request_get(url.path) do |resp|
|
|
49
|
+
resp.read_body do |segment|
|
|
50
|
+
file.write(segment)
|
|
64
51
|
end
|
|
65
52
|
end
|
|
53
|
+
rescue e
|
|
54
|
+
@error = true
|
|
55
|
+
raise
|
|
56
|
+
ensure
|
|
57
|
+
file.close
|
|
58
|
+
# If any failures occurred, don't risk keeping
|
|
59
|
+
# an incomplete download that we'll see as 'cached'
|
|
60
|
+
if @error
|
|
61
|
+
FileUtils.rm_f(temp_path)
|
|
62
|
+
else
|
|
63
|
+
FileUtils.mv(temp_path, local_path)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
end
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
require_relative "log"
|
|
19
19
|
require_relative "error"
|
|
20
20
|
require "train"
|
|
21
|
-
|
|
22
21
|
module ChefApply
|
|
23
22
|
class TargetHost
|
|
24
23
|
attr_reader :config, :reporter, :backend, :transport_type
|
|
@@ -142,6 +141,9 @@ module ChefApply
|
|
|
142
141
|
when :macos
|
|
143
142
|
require_relative "target_host/macos"
|
|
144
143
|
class << self; include ChefApply::TargetHost::MacOS; end
|
|
144
|
+
when :solaris
|
|
145
|
+
require_relative "target_host/solaris"
|
|
146
|
+
class << self; include ChefApply::TargetHost::Solaris; end
|
|
145
147
|
when :other
|
|
146
148
|
raise ChefApply::TargetHost::UnsupportedTargetOS.new(platform.name)
|
|
147
149
|
end
|
|
@@ -174,6 +176,8 @@ module ChefApply
|
|
|
174
176
|
:linux
|
|
175
177
|
elsif platform.darwin?
|
|
176
178
|
:macos
|
|
179
|
+
elsif platform.solaris?
|
|
180
|
+
:solaris
|
|
177
181
|
else
|
|
178
182
|
:other
|
|
179
183
|
end
|
|
@@ -312,7 +316,7 @@ module ChefApply
|
|
|
312
316
|
case original_exception.message # original_exception.reason
|
|
313
317
|
when /Sudo requires a password/ # :sudo_password_required
|
|
314
318
|
"CHEFTRN003"
|
|
315
|
-
when /Wrong sudo password/
|
|
319
|
+
when /Wrong sudo password/ # :bad_sudo_password
|
|
316
320
|
"CHEFTRN004"
|
|
317
321
|
when /Can't find sudo command/, /No such file/, /command not found/ # :sudo_command_not_found
|
|
318
322
|
# NOTE: In the /No such file/ case, reason will be nil - we still have
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module ChefApply
|
|
2
|
+
class TargetHost
|
|
3
|
+
module Solaris
|
|
4
|
+
|
|
5
|
+
def omnibus_manifest_path
|
|
6
|
+
# Note that we can't use File::Join, because that will render for the
|
|
7
|
+
# CURRENT platform - not the platform of the target.
|
|
8
|
+
"/opt/chef/version-manifest.json"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def mkdir(path)
|
|
12
|
+
run_command!("mkdir -p #{path}")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def chown(path, owner)
|
|
16
|
+
owner ||= user
|
|
17
|
+
run_command!("chown #{owner} '#{path}'")
|
|
18
|
+
nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def make_temp_dir
|
|
22
|
+
# We will cache this so that we only run this once
|
|
23
|
+
@tempdir ||= begin
|
|
24
|
+
res = run_command!("bash -c '#{MKTEMP_COMMAND}'")
|
|
25
|
+
res.stdout.chomp.strip
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def install_package(target_package_path)
|
|
30
|
+
command = "pkg install -g #{target_package_path} chef"
|
|
31
|
+
run_command!(command)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def del_file(path)
|
|
35
|
+
run_command!("rm -rf #{path}")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def del_dir(path)
|
|
39
|
+
del_file(path)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def ws_cache_path
|
|
43
|
+
"/var/chef-workstation"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Nothing to escape in a unix-based path
|
|
47
|
+
def normalize_path(path)
|
|
48
|
+
path
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
MKTEMP_COMMAND = "d=$(mktemp -d -p${TMPDIR:-/tmp} chef_XXXXXX); echo $d".freeze
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
data/lib/chef_apply/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chef-apply
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chef Software, Inc
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-08-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: mixlib-cli
|
|
@@ -252,6 +252,7 @@ files:
|
|
|
252
252
|
- lib/chef_apply/target_host.rb
|
|
253
253
|
- lib/chef_apply/target_host/linux.rb
|
|
254
254
|
- lib/chef_apply/target_host/macos.rb
|
|
255
|
+
- lib/chef_apply/target_host/solaris.rb
|
|
255
256
|
- lib/chef_apply/target_host/windows.rb
|
|
256
257
|
- lib/chef_apply/target_resolver.rb
|
|
257
258
|
- lib/chef_apply/telemeter.rb
|
|
@@ -281,7 +282,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
281
282
|
requirements:
|
|
282
283
|
- - ">="
|
|
283
284
|
- !ruby/object:Gem::Version
|
|
284
|
-
version: '2.
|
|
285
|
+
version: '2.7'
|
|
285
286
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
286
287
|
requirements:
|
|
287
288
|
- - ">="
|