kitchen-wpar 0.2.0 → 0.4.0
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/CHANGELOG.md +4 -0
- data/README.md +1 -0
- data/lib/kitchen/driver/wpar.rb +91 -5
- data/lib/kitchen/driver/wpar_version.rb +1 -1
- data/test/wpar_spec.rb +7 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3e0233ac43573699543e48d649035f5ea153d90d
|
|
4
|
+
data.tar.gz: eddc62479f83d58ce5f14dc6eb2b06f35fb7ffc2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 33071aa96867e62f3f54c0982a7d202ade59f421fa00487c124703604b4ed93343a0d6a6064628a0e2d08a7e64e3926b621dba9fffab4f635fe6a137484694ce
|
|
7
|
+
data.tar.gz: 7c2dff031be297cac01ccaf67fc2e3b8a85653ead8026c6aa0b502fae2c8b67dd4f7b72a700a52ed621cee1804e366bc12e2f9996938b8eaff48ce7f4f1d6b40
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -21,6 +21,7 @@ Please read the [Driver usage][driver_usage] page for more details.
|
|
|
21
21
|
* **wpar_vg** Volume group to use to store shared wpar filesystems. Default to **rootvg**.
|
|
22
22
|
* **wpar_rootvg** Specify the `hdisk` to use to create a rootvg system wpar.
|
|
23
23
|
* **wpar_mksysb** uses a wpar backup. Specify a path to a backup to save time.
|
|
24
|
+
* **wpar_copy_rootvg** adds the option ' -t' to copy rootvg file systems.
|
|
24
25
|
* **isVersioned** create a versioned wpar. Used only with **wpar_mksysb**.
|
|
25
26
|
* **isWritable** adds the option ' -l' to have a non-shared, writable /usr file system and /opt file system.
|
|
26
27
|
|
data/lib/kitchen/driver/wpar.rb
CHANGED
|
@@ -38,10 +38,19 @@ module Kitchen
|
|
|
38
38
|
default_config :rmwpar, '/usr/sbin/rmwpar'
|
|
39
39
|
default_config :lswpar, '/usr/sbin/lswpar'
|
|
40
40
|
default_config :wpar_name, 'kitchenwpar'
|
|
41
|
+
default_config :wpar_copy_rootvg, false
|
|
41
42
|
default_config :aix_host, 'localhost'
|
|
42
43
|
default_config :aix_user, 'root'
|
|
43
44
|
default_config :isWritable, false
|
|
44
45
|
default_config :isVersioned, false
|
|
46
|
+
default_config :echo, '/bin/echo'
|
|
47
|
+
default_config :clogin, '/usr/sbin/clogin'
|
|
48
|
+
default_config :lssrc, '/usr/bin/lssrc'
|
|
49
|
+
default_config :mkssys, '/usr/bin/mkssys'
|
|
50
|
+
default_config :startsrc, '/usr/bin/startsrc'
|
|
51
|
+
default_config :stopsrc, '/usr/bin/stopsrc'
|
|
52
|
+
default_config :pam_sshd_account_rule, 'sshd account required pam_aix'
|
|
53
|
+
default_config :pam_sshd_session_rule, 'sshd session required pam_aix'
|
|
45
54
|
|
|
46
55
|
def create(state)
|
|
47
56
|
if wpar_exists?(state)
|
|
@@ -56,12 +65,19 @@ module Kitchen
|
|
|
56
65
|
end
|
|
57
66
|
state[:hostname]= config[:wpar_address] || config[:wpar_name]
|
|
58
67
|
copy_key()
|
|
59
|
-
end
|
|
60
68
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
69
|
+
# Ensure sshd is a defined service and is running so that
|
|
70
|
+
# kitchen can connect to the host and do work.
|
|
71
|
+
unless sshd_service_exists?
|
|
72
|
+
create_sshd_service
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
unless sshd_service_running?
|
|
76
|
+
start_sshd_service
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
unless pam_supports_sshd?
|
|
80
|
+
configure_pam
|
|
65
81
|
end
|
|
66
82
|
end
|
|
67
83
|
|
|
@@ -88,6 +104,10 @@ module Kitchen
|
|
|
88
104
|
cmd += " -B #{config[:wpar_mksysb]}"
|
|
89
105
|
end
|
|
90
106
|
|
|
107
|
+
if config[:wpar_copy_rootvg]
|
|
108
|
+
cmd += ' -t'
|
|
109
|
+
end
|
|
110
|
+
|
|
91
111
|
if config[:isWritable]
|
|
92
112
|
cmd += ' -l'
|
|
93
113
|
end
|
|
@@ -112,6 +132,72 @@ module Kitchen
|
|
|
112
132
|
true
|
|
113
133
|
end
|
|
114
134
|
|
|
135
|
+
# Determines if the sshd service is defined in the WPAR.
|
|
136
|
+
def sshd_service_exists?
|
|
137
|
+
# FIXME: We should probably check exit status rather than AIX-specific error codes.
|
|
138
|
+
output=ssh_command("#{config[:clogin]} #{config[:wpar_name]} #{config[:lssrc]} -s sshd", :stderr)
|
|
139
|
+
if output.include?('0513-085') # 0513-085 The sshd Subsystem is not on file.
|
|
140
|
+
return false
|
|
141
|
+
end
|
|
142
|
+
true
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Creates an sshd service.
|
|
146
|
+
def create_sshd_service
|
|
147
|
+
# FIXME: We should probably check exit status rather than AIX-specific error codes.
|
|
148
|
+
output=ssh_command("#{config[:clogin]} #{config[:wpar_name]} #{config[:mkssys]} -s sshd -p /usr/sbin/sshd -a '-D' -u 0 -S -n 15 -f 9 -R -G local", :stderr)
|
|
149
|
+
if output.include?('0513-071') # 0513-071 The sshd Subsystem has been added.
|
|
150
|
+
return true
|
|
151
|
+
end
|
|
152
|
+
false
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Determines if the sshd service is running.
|
|
156
|
+
def sshd_service_running?
|
|
157
|
+
# FIXME: We should probably check exit status rather than AIX-specific error codes.
|
|
158
|
+
output=ssh_command("#{config[:clogin]} #{config[:wpar_name]} #{config[:lssrc]} -s sshd", :stderr)
|
|
159
|
+
if output.include?('active')
|
|
160
|
+
return true
|
|
161
|
+
end
|
|
162
|
+
false # Status == inoperative
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Starts the sshd service.
|
|
166
|
+
def start_sshd_service
|
|
167
|
+
# FIXME: We should probably check exit status rather than AIX-specific error codes.
|
|
168
|
+
output=ssh_command("#{config[:clogin]} #{config[:wpar_name]} #{config[:startsrc]} -s sshd", :stderr)
|
|
169
|
+
if output.include?('0513-059') # 0513-059 The sshd Subsystem has been started. Subsystem PID is 2688212.
|
|
170
|
+
return true
|
|
171
|
+
end
|
|
172
|
+
false
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# Determines if PAM support for sshd exists in this WPAR.
|
|
176
|
+
# This includes account and session rules.
|
|
177
|
+
def pam_supports_sshd?
|
|
178
|
+
pam_config_path = "/wpars/#{config[:wpar_name]}/etc/pam.conf"
|
|
179
|
+
account_output=ssh_command("grep '#{config[:pam_sshd_account_rule]}' #{pam_config_path}", :stderr)
|
|
180
|
+
session_output=ssh_command("grep '#{config[:pam_sshd_session_rule]}' #{pam_config_path}", :stderr)
|
|
181
|
+
|
|
182
|
+
unless account_output.include?("#{config[:pam_sshd_account_rule]}")
|
|
183
|
+
return false
|
|
184
|
+
end
|
|
185
|
+
unless session_output.include?("#{config[:pam_sshd_session_rule]}")
|
|
186
|
+
return false
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
true
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# Configures PAM support for sshd in the WPAR.
|
|
193
|
+
def configure_pam
|
|
194
|
+
pam_config_path = "/wpars/#{config[:wpar_name]}/etc/pam.conf"
|
|
195
|
+
pam_sshd_rules = "#{config[:pam_sshd_account_rule]}\\n#{config[:pam_sshd_session_rule]}"
|
|
196
|
+
header = "\\n\\n# sshd Rules\\n"
|
|
197
|
+
cmd = "#{config[:echo]} \"#{header}#{pam_sshd_rules}\" >> #{pam_config_path}"
|
|
198
|
+
ssh_command(cmd, :stderr)
|
|
199
|
+
end
|
|
200
|
+
|
|
115
201
|
def ssh_command(cmd, stream)
|
|
116
202
|
out = ''
|
|
117
203
|
begin
|
data/test/wpar_spec.rb
CHANGED
|
@@ -75,6 +75,13 @@ describe Kitchen::Driver::Wpar do
|
|
|
75
75
|
expect(driver.send(:build_mkwpar_command)).to eq(default_string)
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
+
it 'sets wpar_copy_rootvg to true' do
|
|
79
|
+
config[:wpar_copy_rootvg] = true
|
|
80
|
+
default_string = '/usr/sbin/mkwpar -s -n kitchenwpar -t'
|
|
81
|
+
|
|
82
|
+
expect(driver.send(:build_mkwpar_command)).to eq(default_string)
|
|
83
|
+
end
|
|
84
|
+
|
|
78
85
|
it 'sets isWritable to false' do
|
|
79
86
|
config[:isWritable] = false
|
|
80
87
|
default_string = '/usr/sbin/mkwpar -s -n kitchenwpar'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-wpar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alain Dejoux
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-07-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
201
201
|
version: '0'
|
|
202
202
|
requirements: []
|
|
203
203
|
rubyforge_project:
|
|
204
|
-
rubygems_version: 2.6.
|
|
204
|
+
rubygems_version: 2.6.12
|
|
205
205
|
signing_key:
|
|
206
206
|
specification_version: 4
|
|
207
207
|
summary: test kitchen driver using AIX wpar
|