cem_acpt 0.2.5 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/spec.yml +38 -0
  3. data/Gemfile +4 -3
  4. data/Gemfile.lock +85 -56
  5. data/README.md +144 -83
  6. data/cem_acpt.gemspec +8 -7
  7. data/exe/cem_acpt +41 -7
  8. data/lib/cem_acpt/config.rb +345 -0
  9. data/lib/cem_acpt/core_extensions.rb +17 -61
  10. data/lib/cem_acpt/goss/api/action_response.rb +175 -0
  11. data/lib/cem_acpt/goss/api.rb +83 -0
  12. data/lib/cem_acpt/goss.rb +8 -0
  13. data/lib/cem_acpt/image_name_builder.rb +0 -9
  14. data/lib/cem_acpt/logging/formatter.rb +97 -0
  15. data/lib/cem_acpt/logging.rb +168 -142
  16. data/lib/cem_acpt/platform/base.rb +26 -37
  17. data/lib/cem_acpt/platform/gcp.rb +48 -62
  18. data/lib/cem_acpt/platform.rb +30 -28
  19. data/lib/cem_acpt/provision/terraform/linux.rb +47 -0
  20. data/lib/cem_acpt/provision/terraform/os_data.rb +72 -0
  21. data/lib/cem_acpt/provision/terraform/windows.rb +22 -0
  22. data/lib/cem_acpt/provision/terraform.rb +193 -0
  23. data/lib/cem_acpt/provision.rb +20 -0
  24. data/lib/cem_acpt/puppet_helpers.rb +0 -1
  25. data/lib/cem_acpt/test_data.rb +23 -13
  26. data/lib/cem_acpt/test_runner/log_formatter/goss_action_response.rb +104 -0
  27. data/lib/cem_acpt/test_runner/log_formatter.rb +10 -0
  28. data/lib/cem_acpt/test_runner.rb +170 -3
  29. data/lib/cem_acpt/utils/puppet.rb +29 -0
  30. data/lib/cem_acpt/utils/ssh.rb +197 -0
  31. data/lib/cem_acpt/utils/terminal.rb +27 -0
  32. data/lib/cem_acpt/utils.rb +4 -138
  33. data/lib/cem_acpt/version.rb +1 -1
  34. data/lib/cem_acpt.rb +70 -20
  35. data/lib/terraform/gcp/linux/goss/puppet_idempotent.yaml +10 -0
  36. data/lib/terraform/gcp/linux/goss/puppet_noop.yaml +12 -0
  37. data/lib/terraform/gcp/linux/main.tf +191 -0
  38. data/lib/terraform/gcp/linux/systemd/goss-acpt.service +8 -0
  39. data/lib/terraform/gcp/linux/systemd/goss-idempotent.service +8 -0
  40. data/lib/terraform/gcp/linux/systemd/goss-noop.service +8 -0
  41. data/lib/terraform/gcp/windows/.keep +0 -0
  42. data/sample_config.yaml +22 -21
  43. metadata +88 -56
  44. data/lib/cem_acpt/bootstrap/bootstrapper.rb +0 -206
  45. data/lib/cem_acpt/bootstrap/operating_system/rhel_family.rb +0 -129
  46. data/lib/cem_acpt/bootstrap/operating_system.rb +0 -17
  47. data/lib/cem_acpt/bootstrap.rb +0 -12
  48. data/lib/cem_acpt/context.rb +0 -153
  49. data/lib/cem_acpt/platform/base/cmd.rb +0 -71
  50. data/lib/cem_acpt/platform/gcp/cmd.rb +0 -345
  51. data/lib/cem_acpt/platform/gcp/compute.rb +0 -332
  52. data/lib/cem_acpt/platform/vmpooler.rb +0 -24
  53. data/lib/cem_acpt/rspec_utils.rb +0 -242
  54. data/lib/cem_acpt/shared_objects.rb +0 -537
  55. data/lib/cem_acpt/spec_helper_acceptance.rb +0 -184
  56. data/lib/cem_acpt/test_runner/run_handler.rb +0 -187
  57. data/lib/cem_acpt/test_runner/runner.rb +0 -210
  58. data/lib/cem_acpt/test_runner/runner_result.rb +0 -103
metadata CHANGED
@@ -1,122 +1,146 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cem_acpt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - puppetlabs
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-27 00:00:00.000000000 Z
11
+ date: 2023-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: async-http
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
- - - "~>"
17
+ - - ">="
17
18
  - !ruby/object:Gem::Version
18
- version: 1.1.9
19
- name: concurrent-ruby
20
- prerelease: false
19
+ version: '0.60'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '0.70'
21
23
  type: :runtime
24
+ prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: 1.1.9
29
+ version: '0.60'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.70'
27
33
  - !ruby/object:Gem::Dependency
34
+ name: bcrypt_pbkdf
28
35
  requirement: !ruby/object:Gem::Requirement
29
36
  requirements:
30
- - - "~>"
37
+ - - ">="
31
38
  - !ruby/object:Gem::Version
32
- version: 1.2.2
33
- name: deep_merge
34
- prerelease: false
39
+ version: '1.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.0'
35
43
  type: :runtime
44
+ prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - "~>"
47
+ - - ">="
39
48
  - !ruby/object:Gem::Version
40
- version: 1.2.2
49
+ version: '1.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.0'
41
53
  - !ruby/object:Gem::Dependency
54
+ name: deep_merge
42
55
  requirement: !ruby/object:Gem::Requirement
43
56
  requirements:
44
- - - "~>"
57
+ - - ">="
45
58
  - !ruby/object:Gem::Version
46
- version: 7.0.0.beta1
47
- name: net-ssh
48
- prerelease: false
59
+ version: '1.2'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
49
63
  type: :runtime
64
+ prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
- - - "~>"
67
+ - - ">="
53
68
  - !ruby/object:Gem::Version
54
- version: 7.0.0.beta1
69
+ version: '1.2'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '2.0'
55
73
  - !ruby/object:Gem::Dependency
74
+ name: ed25519
56
75
  requirement: !ruby/object:Gem::Requirement
57
76
  requirements:
58
- - - ">"
77
+ - - ">="
59
78
  - !ruby/object:Gem::Version
60
- version: 0.0.1
61
- name: puppet-modulebuilder
62
- prerelease: false
79
+ version: '1.2'
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.0'
63
83
  type: :runtime
84
+ prerelease: false
64
85
  version_requirements: !ruby/object:Gem::Requirement
65
86
  requirements:
66
- - - ">"
87
+ - - ">="
67
88
  - !ruby/object:Gem::Version
68
- version: 0.0.1
89
+ version: '1.2'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '2.0'
69
93
  - !ruby/object:Gem::Dependency
94
+ name: puppet-modulebuilder
70
95
  requirement: !ruby/object:Gem::Requirement
71
96
  requirements:
72
97
  - - ">="
73
98
  - !ruby/object:Gem::Version
74
- version: '0'
75
- name: rake
76
- prerelease: false
99
+ version: 0.0.1
77
100
  type: :runtime
101
+ prerelease: false
78
102
  version_requirements: !ruby/object:Gem::Requirement
79
103
  requirements:
80
104
  - - ">="
81
105
  - !ruby/object:Gem::Version
82
- version: '0'
106
+ version: 0.0.1
83
107
  - !ruby/object:Gem::Dependency
108
+ name: ruby-terraform
84
109
  requirement: !ruby/object:Gem::Requirement
85
110
  requirements:
86
- - - ">="
111
+ - - "~>"
87
112
  - !ruby/object:Gem::Version
88
- version: '0'
89
- name: rspec
90
- prerelease: false
113
+ version: '1.7'
91
114
  type: :runtime
115
+ prerelease: false
92
116
  version_requirements: !ruby/object:Gem::Requirement
93
117
  requirements:
94
- - - ">="
118
+ - - "~>"
95
119
  - !ruby/object:Gem::Version
96
- version: '0'
120
+ version: '1.7'
97
121
  - !ruby/object:Gem::Dependency
122
+ name: pry
98
123
  requirement: !ruby/object:Gem::Requirement
99
124
  requirements:
100
125
  - - ">="
101
126
  - !ruby/object:Gem::Version
102
127
  version: '0'
103
- name: serverspec-cem-acpt
128
+ type: :development
104
129
  prerelease: false
105
- type: :runtime
106
130
  version_requirements: !ruby/object:Gem::Requirement
107
131
  requirements:
108
132
  - - ">="
109
133
  - !ruby/object:Gem::Version
110
134
  version: '0'
111
135
  - !ruby/object:Gem::Dependency
136
+ name: rubocop
112
137
  requirement: !ruby/object:Gem::Requirement
113
138
  requirements:
114
139
  - - ">="
115
140
  - !ruby/object:Gem::Version
116
141
  version: '0'
117
- name: rubocop
118
- prerelease: false
119
142
  type: :development
143
+ prerelease: false
120
144
  version_requirements: !ruby/object:Gem::Requirement
121
145
  requirements:
122
146
  - - ">="
@@ -130,6 +154,7 @@ executables:
130
154
  extensions: []
131
155
  extra_rdoc_files: []
132
156
  files:
157
+ - ".github/workflows/spec.yml"
133
158
  - ".gitignore"
134
159
  - ".rspec"
135
160
  - CODEOWNERS
@@ -142,32 +167,39 @@ files:
142
167
  - cem_acpt.gemspec
143
168
  - exe/cem_acpt
144
169
  - lib/cem_acpt.rb
145
- - lib/cem_acpt/bootstrap.rb
146
- - lib/cem_acpt/bootstrap/bootstrapper.rb
147
- - lib/cem_acpt/bootstrap/operating_system.rb
148
- - lib/cem_acpt/bootstrap/operating_system/rhel_family.rb
149
- - lib/cem_acpt/context.rb
170
+ - lib/cem_acpt/config.rb
150
171
  - lib/cem_acpt/core_extensions.rb
172
+ - lib/cem_acpt/goss.rb
173
+ - lib/cem_acpt/goss/api.rb
174
+ - lib/cem_acpt/goss/api/action_response.rb
151
175
  - lib/cem_acpt/image_name_builder.rb
152
176
  - lib/cem_acpt/logging.rb
177
+ - lib/cem_acpt/logging/formatter.rb
153
178
  - lib/cem_acpt/platform.rb
154
179
  - lib/cem_acpt/platform/base.rb
155
- - lib/cem_acpt/platform/base/cmd.rb
156
180
  - lib/cem_acpt/platform/gcp.rb
157
- - lib/cem_acpt/platform/gcp/cmd.rb
158
- - lib/cem_acpt/platform/gcp/compute.rb
159
- - lib/cem_acpt/platform/vmpooler.rb
181
+ - lib/cem_acpt/provision.rb
182
+ - lib/cem_acpt/provision/terraform.rb
183
+ - lib/cem_acpt/provision/terraform/linux.rb
184
+ - lib/cem_acpt/provision/terraform/os_data.rb
185
+ - lib/cem_acpt/provision/terraform/windows.rb
160
186
  - lib/cem_acpt/puppet_helpers.rb
161
- - lib/cem_acpt/rspec_utils.rb
162
- - lib/cem_acpt/shared_objects.rb
163
- - lib/cem_acpt/spec_helper_acceptance.rb
164
187
  - lib/cem_acpt/test_data.rb
165
188
  - lib/cem_acpt/test_runner.rb
166
- - lib/cem_acpt/test_runner/run_handler.rb
167
- - lib/cem_acpt/test_runner/runner.rb
168
- - lib/cem_acpt/test_runner/runner_result.rb
189
+ - lib/cem_acpt/test_runner/log_formatter.rb
190
+ - lib/cem_acpt/test_runner/log_formatter/goss_action_response.rb
169
191
  - lib/cem_acpt/utils.rb
192
+ - lib/cem_acpt/utils/puppet.rb
193
+ - lib/cem_acpt/utils/ssh.rb
194
+ - lib/cem_acpt/utils/terminal.rb
170
195
  - lib/cem_acpt/version.rb
196
+ - lib/terraform/gcp/linux/goss/puppet_idempotent.yaml
197
+ - lib/terraform/gcp/linux/goss/puppet_noop.yaml
198
+ - lib/terraform/gcp/linux/main.tf
199
+ - lib/terraform/gcp/linux/systemd/goss-acpt.service
200
+ - lib/terraform/gcp/linux/systemd/goss-idempotent.service
201
+ - lib/terraform/gcp/linux/systemd/goss-noop.service
202
+ - lib/terraform/gcp/windows/.keep
171
203
  - sample_config.yaml
172
204
  homepage: https://github.com/puppetlabs/cem_acpt
173
205
  licenses:
@@ -191,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
223
  - !ruby/object:Gem::Version
192
224
  version: '0'
193
225
  requirements: []
194
- rubygems_version: 3.2.29
226
+ rubygems_version: 3.4.6
195
227
  signing_key:
196
228
  specification_version: 4
197
229
  summary: CEM Acceptance Tests
@@ -1,206 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'operating_system'
4
-
5
- # Currently unused in this implementation.
6
- module CemAcpt::Bootstrap
7
- # This class runs bootstrapping commands on the VM after it
8
- # is provisioned. This can include installing repos,
9
- # installing Puppet, installing other programs,
10
- # starting services, and running other commands.
11
- class Bootstrapper
12
- STATE_ORDER = [:repo, :package, :service, :command, :complete].freeze
13
- STATE_ACTIONS = {
14
- repo: :run_repo_installs,
15
- package: :run_package_installs,
16
- service: :run_service_starts,
17
- command: :run_commands,
18
- }.freeze
19
- UNIVERSAL_DEPS = [
20
- 'git',
21
- 'curl',
22
- 'puppet-agent',
23
- ].freeze
24
- include CemAcpt::Bootstrap::OperatingSystem
25
-
26
- def initialize(instance_name, instance_image, cmd, collection: 'puppet7', repos: [], packages: [], services: [], commands: [])
27
- os, major_version = instance_image.split('-')
28
- use_os(os)
29
- @instance_name = instance_name.split('.').first
30
- @cmd_provider = cmd
31
- @collection = collection
32
- @os = os
33
- @major_version = major_version
34
- @repos = repos
35
- @packages = packages
36
- @services = services
37
- @commands = commands
38
- @logfile = '/var/log/bootstrap.log'
39
- @state = 0
40
- @retries = 0
41
- @results = {}
42
- end
43
-
44
- def ruby_version
45
- return @ruby_version if defined?(@ruby_version)
46
-
47
- @ruby_version = determine_ruby_version(@collection)
48
- @ruby_version
49
- end
50
-
51
- def repos
52
- @repos.push(puppet_agent_repo).uniq
53
- end
54
-
55
- def packages
56
- (@packages + UNIVERSAL_DEPS).uniq
57
- end
58
-
59
- def services
60
- @services.uniq
61
- end
62
-
63
- def commands
64
- @commands + ruby_install_commands
65
- end
66
-
67
- def instance_available?
68
- @instance_available ||= test_connection
69
- end
70
-
71
- def run
72
- raise 'Instance is not available' unless instance_available?
73
-
74
- @results = {}
75
- transition_state
76
- @results
77
- rescue StandardError => e
78
- return_results_with_error(e)
79
- end
80
-
81
- private
82
-
83
- def return_results_with_error(error)
84
- @results[:_error] = {
85
- error: error,
86
- details: {
87
- instance_name: @instance_name,
88
- instance_image: @instance_image,
89
- collection: @collection,
90
- os: @os,
91
- major_version: @major_version,
92
- repos: repos,
93
- packages: packages,
94
- services: services,
95
- commands: commands,
96
- state: @state,
97
- retries: @retries,
98
- },
99
- }
100
- @results
101
- end
102
-
103
- def execute_state_action
104
- state_sym = STATE_ORDER[@state]
105
- send(STATE_ACTIONS[state_sym])
106
- end
107
-
108
- def transition_state
109
- raise @last_error if @results.key?(:_error)
110
- return if @state == STATE_ORDER.length - 1
111
-
112
- begin
113
- execute_state_action
114
- rescue StandardError => e
115
- @last_error_time = Time.now
116
- @last_errored_state = @state
117
- @last_error = e
118
- handle_state_error
119
- end
120
- @state += 1
121
- transition_state
122
- end
123
-
124
- def run_repo_installs
125
- raise 'Instance is not available' unless instance_available?
126
-
127
- run_ssh_command_with_formatting(repo_install_cmd(repos), :repo_installs)
128
- end
129
-
130
- def run_package_installs
131
- raise 'Instance is not available' unless instance_available?
132
-
133
- run_ssh_command_with_formatting(package_install_cmd(packages), :package_installs)
134
- end
135
-
136
- def run_service_starts
137
- raise 'Instance is not available' unless instance_available?
138
-
139
- run_ssh_command_with_formatting(service_start_cmd(services), :service_starts)
140
- end
141
-
142
- def run_commands
143
- raise 'Instance is not available' unless instance_available?
144
-
145
- run_ssh_command_with_formatting(commands.join(';'), :command_runs)
146
- end
147
-
148
- def handle_state_error
149
- @retries = 0 unless @last_errored_state == @state
150
-
151
- raise @last_error unless @retries < 3
152
-
153
- @retries += 1
154
- @state = @last_errored_state
155
- transition_state
156
- end
157
-
158
- def run_ssh_command_with_formatting(cmd, results_key, log_file: '/tmp/puppet-bootstrap.log')
159
- key = results_key.to_sym
160
- @results[key] = {}
161
- @results[key][:started] = Time.now
162
- if cmd.nil? || cmd.empty?
163
- @results[key][:results] = 'No command(s) to run'
164
- @results[key][:finished] = Time.now
165
- return
166
- end
167
- cmd = "#{cmd} | tee -a #{log_file}"
168
- ssh_results = @cmd_provider.ssh(@instance_name, cmd)
169
- @results[key][:results] = ssh_results.gsub(%r{\s+}, ' ').split('\n')
170
- @results[key][:finished] = Time.now
171
- end
172
-
173
- def verify_command(results_key)
174
- send("verify_#{results_key}".to_sym)
175
- end
176
-
177
- def test_connection
178
- return true if @cmd_provider.ssh_ready?(@instance_name)
179
-
180
- raise "Connection test failed for #{@instance_name}"
181
- end
182
-
183
- def determine_ruby_version(collection)
184
- case collection
185
- when 'puppet7'
186
- '2.7'
187
- when 'puppet6'
188
- '2.5'
189
- else
190
- raise "Cannot determine Ruby version, unsupported collection: #{collection}"
191
- end
192
- end
193
-
194
- def ruby_install_commands
195
- [
196
- 'curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer -o rvm-installer',
197
- 'curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer.asc -o rvm-installer.asc',
198
- 'chmod +x rvm-installer',
199
- 'gpg --verify rvm-installer.asc rvm-installer && sudo ./rvm-installer',
200
- "sudo rvm install #{ruby_version} && sudo rvm use #{ruby_version} --default",
201
- 'gem install bundler',
202
- '[[ -f ./Gemfile ]] && bundle install',
203
- ]
204
- end
205
- end
206
- end
@@ -1,129 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Currently unused in this implementation.
4
- module CemAcpt::Bootstrap::OperatingSystem
5
- # This module holds methods used by Bootstrap for RHEL-family operating systems
6
- module RhelFamily
7
- def puppet_agent_repo
8
- "https://yum.puppet.com/#{@collection}-release-el-#{@major_version}.noarch.rpm"
9
- end
10
-
11
- def package_manager
12
- return 'dnf' if @major_version.to_i >= 8
13
-
14
- 'yum'
15
- end
16
-
17
- def rvm_deps
18
- [
19
- 'kernel-devel',
20
- 'gcc',
21
- 'gcc-c++',
22
- 'make',
23
- 'augeas',
24
- 'augeas-devel',
25
- 'patch',
26
- 'readline',
27
- 'readline-devel',
28
- 'zlib',
29
- 'zlib-devel',
30
- 'libffi-devel',
31
- 'openssl-devel',
32
- 'bzip2',
33
- 'autoconf',
34
- 'automake',
35
- 'libtool',
36
- 'bison',
37
- 'sqlite-devel',
38
- ]
39
- end
40
-
41
- def repo_installs(repos, sudo: true)
42
- return if repos.nil? || repos.empty?
43
-
44
- cmd = [
45
- repo_install_cmd(repos, sudo: sudo),
46
- repo_install_verify_cmd(repos, sudo: sudo),
47
- ].join(' && ')
48
- "#{cmd} | sudo tee -ai #{@log_file}"
49
- end
50
-
51
- def package_installs(packages, sudo: true)
52
- return if packages.nil? || packages.empty?
53
-
54
- packages += rvm_deps
55
- cmd = [
56
- package_install_cmd(packages, sudo: sudo),
57
- package_install_verify_cmd(packages, sudo: sudo),
58
- ].join(' && ')
59
- "#{cmd} | sudo tee -ai #{@log_file}"
60
- end
61
-
62
- def service_starts(services, sudo: true)
63
- return if services.nil? || services.empty?
64
-
65
- cmd = [
66
- #service_start_verify_existance_cmd(services, sudo: sudo),
67
- service_start_cmd(services, sudo: sudo),
68
- ].join(' && ')
69
- "#{cmd} | sudo tee -ai #{@log_file}"
70
- end
71
-
72
- def repo_install_cmd(repos, sudo: true)
73
- cmd = []
74
- cmd << 'sudo' if sudo
75
- cmd << 'rpm -Uv'
76
- repos.each { |r| cmd << r }
77
- cmd.join(' ')
78
- end
79
-
80
- def repo_install_verify_cmd(repos, sudo: true)
81
- cmd = []
82
- cmd << 'sudo' if sudo
83
- cmd << 'rpm -q'
84
- repos.each { |r| cmd << r }
85
- cmd.join(' ')
86
- end
87
-
88
- def package_install_cmd(packages, sudo: true)
89
- cmd = []
90
- cmd << 'sudo' if sudo
91
- cmd << "#{package_manager} install #{package_install_cmd_opts}"
92
- packages.each { |p| cmd << p }
93
- cmd << package_install_cmd_output_format
94
- cmd.join(' ')
95
- end
96
-
97
- def package_install_verify_cmd(packages, sudo: true)
98
- cmd = []
99
- cmd << 'sudo' if sudo
100
- cmd << "#{package_manager} list installed"
101
- packages.each { |p| cmd << p }
102
- cmd.join(' ')
103
- end
104
-
105
- def package_install_cmd_opts
106
- '-y'
107
- end
108
-
109
- def package_install_cmd_output_format
110
- '| tr "\n" "#" | sed -e \'s/# / /g\' | tr "#" "\n"'
111
- end
112
-
113
- def service_start_cmd(services, sudo: true)
114
- cmd = []
115
- cmd << 'sudo' if sudo
116
- cmd << 'systemctl start'
117
- services.each { |s| cmd << s }
118
- cmd.join(' ')
119
- end
120
-
121
- def service_start_verify_existance_cmd(services, sudo: true)
122
- cmd = []
123
- cmd << 'sudo' if sudo
124
- cmd << 'systemctl list-units --type=service'
125
- services.each { |s| cmd << s }
126
- cmd.join(' ')
127
- end
128
- end
129
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Currently unused in this implementation.
4
- module CemAcpt::Bootstrap::OperatingSystem
5
- class Error < StandardError; end
6
-
7
- # Currently unused in this implementation.
8
- def use_os(os)
9
- case os
10
- when %r{^(centos|rhel)$}
11
- require_relative 'operating_system/rhel_family'
12
- self.class.include CemAcpt::Bootstrap::OperatingSystem::RhelFamily
13
- else
14
- raise Error, "Operating system #{os} is not supported"
15
- end
16
- end
17
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Bootstrap provides a method for bootstrapping test nodes.
4
- # Currently unused in this implementation.
5
- module CemAcpt::Bootstrap
6
- require_relative 'bootstrap/bootstrapper'
7
-
8
- def self.run(instance_name, instance_image, cmd_provider, collection: 'puppet7', repos: [], packages: [], services: [], commands: [], cmd_provider_args: {})
9
- bootstrapper = CemAcpt::Bootstrap::Bootstrapper.new(instance_name, instance_image, cmd_provider, collection: 'puppet7', repos: [], packages: [], services: [], commands: [], cmd_provider_args: {})
10
- bootstrapper.run
11
- end
12
- end