kitchen-wpar 0.2.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|