cem_acpt 0.2.5 → 0.6.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/.github/workflows/spec.yml +38 -0
- data/Gemfile +4 -3
- data/Gemfile.lock +85 -56
- data/README.md +144 -83
- data/cem_acpt.gemspec +8 -7
- data/exe/cem_acpt +41 -7
- data/lib/cem_acpt/config.rb +345 -0
- data/lib/cem_acpt/core_extensions.rb +17 -61
- data/lib/cem_acpt/goss/api/action_response.rb +175 -0
- data/lib/cem_acpt/goss/api.rb +83 -0
- data/lib/cem_acpt/goss.rb +8 -0
- data/lib/cem_acpt/image_name_builder.rb +0 -9
- data/lib/cem_acpt/logging/formatter.rb +97 -0
- data/lib/cem_acpt/logging.rb +168 -142
- data/lib/cem_acpt/platform/base.rb +26 -37
- data/lib/cem_acpt/platform/gcp.rb +48 -62
- data/lib/cem_acpt/platform.rb +30 -28
- data/lib/cem_acpt/provision/terraform/linux.rb +47 -0
- data/lib/cem_acpt/provision/terraform/os_data.rb +72 -0
- data/lib/cem_acpt/provision/terraform/windows.rb +22 -0
- data/lib/cem_acpt/provision/terraform.rb +193 -0
- data/lib/cem_acpt/provision.rb +20 -0
- data/lib/cem_acpt/puppet_helpers.rb +0 -1
- data/lib/cem_acpt/test_data.rb +23 -13
- data/lib/cem_acpt/test_runner/log_formatter/goss_action_response.rb +104 -0
- data/lib/cem_acpt/test_runner/log_formatter.rb +10 -0
- data/lib/cem_acpt/test_runner.rb +170 -3
- data/lib/cem_acpt/utils/puppet.rb +29 -0
- data/lib/cem_acpt/utils/ssh.rb +197 -0
- data/lib/cem_acpt/utils/terminal.rb +27 -0
- data/lib/cem_acpt/utils.rb +4 -138
- data/lib/cem_acpt/version.rb +1 -1
- data/lib/cem_acpt.rb +70 -20
- data/lib/terraform/gcp/linux/goss/puppet_idempotent.yaml +10 -0
- data/lib/terraform/gcp/linux/goss/puppet_noop.yaml +12 -0
- data/lib/terraform/gcp/linux/main.tf +191 -0
- data/lib/terraform/gcp/linux/systemd/goss-acpt.service +8 -0
- data/lib/terraform/gcp/linux/systemd/goss-idempotent.service +8 -0
- data/lib/terraform/gcp/linux/systemd/goss-noop.service +8 -0
- data/lib/terraform/gcp/windows/.keep +0 -0
- data/sample_config.yaml +22 -21
- metadata +88 -56
- data/lib/cem_acpt/bootstrap/bootstrapper.rb +0 -206
- data/lib/cem_acpt/bootstrap/operating_system/rhel_family.rb +0 -129
- data/lib/cem_acpt/bootstrap/operating_system.rb +0 -17
- data/lib/cem_acpt/bootstrap.rb +0 -12
- data/lib/cem_acpt/context.rb +0 -153
- data/lib/cem_acpt/platform/base/cmd.rb +0 -71
- data/lib/cem_acpt/platform/gcp/cmd.rb +0 -345
- data/lib/cem_acpt/platform/gcp/compute.rb +0 -332
- data/lib/cem_acpt/platform/vmpooler.rb +0 -24
- data/lib/cem_acpt/rspec_utils.rb +0 -242
- data/lib/cem_acpt/shared_objects.rb +0 -537
- data/lib/cem_acpt/spec_helper_acceptance.rb +0 -184
- data/lib/cem_acpt/test_runner/run_handler.rb +0 -187
- data/lib/cem_acpt/test_runner/runner.rb +0 -210
- 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.
|
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:
|
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:
|
19
|
-
|
20
|
-
|
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:
|
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.
|
33
|
-
|
34
|
-
|
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.
|
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:
|
47
|
-
|
48
|
-
|
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:
|
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:
|
61
|
-
|
62
|
-
|
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:
|
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:
|
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:
|
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: '
|
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: '
|
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
|
-
|
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/
|
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/
|
158
|
-
- lib/cem_acpt/
|
159
|
-
- lib/cem_acpt/
|
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/
|
167
|
-
- lib/cem_acpt/test_runner/
|
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.
|
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
|
data/lib/cem_acpt/bootstrap.rb
DELETED
@@ -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
|