chef-apply 0.6.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b787c2d47fe3b153a3c8e46613bb62f13b6346a8efad7ae1efe8ece667b3c53c
4
- data.tar.gz: 398bd9ad985fff7b688ce12983c195daadd93048f226834a7463f141c5f71675
3
+ metadata.gz: dcf42f06fe2a7733f4c9755f5cd02b965f45b31e7666db57345b48f0e9692d54
4
+ data.tar.gz: f667eca9ca4afb06480ba754c3de012eb7435c3d1552142e7dbd491c124bf441
5
5
  SHA512:
6
- metadata.gz: c70ecbd0e62ae60c3fc6e7d9e19e72f44aefa5325f83218f495e6cd42abc5bc7809b76b1a1bf2c06f47375be2f85ad0e4d7bd51a637c6210cc87b9237864e0d7
7
- data.tar.gz: 6564f0e408919ac1ae2b1e611feeb9bd7517117d1a3a2e33240a973ec3bca0ea4577650e2b0c20fc7ae71229965fad38879b1429425bf9ff84f48f0ee16ea5ec
6
+ metadata.gz: 47f31dfb20d1562308d4b2735f8f3f225bf7de794e2fcbb47c7d6cff362d763df7681bf4ed005aec0d74816570e7caa39f164aabdaadca1172db25ab0b8fc7e4
7
+ data.tar.gz: 7b4d37d955d6faa57c8314e6d9fd116b850ca76e78bbbdca506a4b51942fa5daed30d5b0cd310c6e89e34047583d5ab23f813c9775065da035c215095e7462f7
data/Gemfile CHANGED
@@ -19,7 +19,7 @@ source "https://rubygems.org"
19
19
  gemspec
20
20
 
21
21
  group :development do
22
- gem "chefstyle", "1.7.4"
22
+ gem "chefstyle", "2.0.8"
23
23
  gem "rake", ">= 10.1.0"
24
24
  gem "rspec", "~> 3.0"
25
25
  gem "simplecov"
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.6"
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 has been enabled by default for this beta release
21
- of chef-run. The anonymous data we gather is used to
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
- To disable it, add the following entry to
25
- %1:
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 client on the target host(s) if it is not installed.
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 client on the target(s).
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 client.
183
- verifying: Verifying Chef client installation.
184
- downloading: Downloading Chef client installer into local cache.
185
- uploading: Uploading Chef client installer to target.
186
- installing: Installing Chef client version %1.
187
- upgrading: Upgrading Chef client from version %1 to %2.
188
- already_present: Chef client version %1 already installed on target.
189
- install_success: Successfully installed Chef client version %1
190
- upgrade_success: Successfully upgraded Chef client from version %1 to %2.
191
- failure: "An error occurred while installing Chef client: %1"
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 client. In order to make use of it
75
- on this node, the Chef client must be installed first.
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 client installed.
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 client on this node to version %2 or later.
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 "-identity-file PATH/TO/FILE"
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
- begin
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
- end
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
@@ -36,6 +36,10 @@ module ChefApply
36
36
  13 => Gem::Version.new("13.10.4"),
37
37
  14 => Gem::Version.new("14.1.1"),
38
38
  },
39
+ solaris: {
40
+ 13 => Gem::Version.new("13.10.4"),
41
+ 14 => Gem::Version.new("14.1.1"),
42
+ },
39
43
  }.freeze
40
44
 
41
45
  def self.check!(target, check_only)
@@ -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
- begin
73
- perform_run(enforce_license: enforce_license)
74
- rescue Exception => e
75
- @rc = handle_run_error(e)
76
- end
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
- begin
48
- http.request_get(url.path) do |resp|
49
- resp.read_body do |segment|
50
- file.write(segment)
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/ #:bad_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
@@ -22,7 +22,6 @@ require_relative "../config"
22
22
  require_relative "../log"
23
23
  require_relative "plain_text_element"
24
24
  require_relative "plain_text_header"
25
-
26
25
  module ChefApply
27
26
  module UI
28
27
  class Terminal
@@ -16,5 +16,5 @@
16
16
  #
17
17
 
18
18
  module ChefApply
19
- VERSION = "0.6.0".freeze
19
+ VERSION = "0.8.1".freeze
20
20
  end
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.6.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-04-04 00:00:00.000000000 Z
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.6'
285
+ version: '2.7'
285
286
  required_rubygems_version: !ruby/object:Gem::Requirement
286
287
  requirements:
287
288
  - - ">="