kitchen-dokken 2.17.4 → 2.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kitchen/driver/dokken.rb +15 -16
- data/lib/kitchen/driver/dokken_version.rb +1 -1
- data/lib/kitchen/helpers.rb +48 -48
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: becf7bcb14b565a4e38ef71339232b99d6cb2196918462f66007d77efcc49e62
|
4
|
+
data.tar.gz: e68938ec9d01a83c72456b3fd51c0af5ec0d81e9092695b11df9e487bfde8fc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbac5749ab791a90968ccfd9ff5d11667ea8d5ad9801146a451cd8fe979db215460506e4a8810bc7b2a8129213a321665f9c5fc26bc461c0135427eff6648da7
|
7
|
+
data.tar.gz: d26c39d6be05058de8e86ff9c10cf8576fc44ea1999f55c8bc0c1b9b6c013abcda5103233f48a788e2164ed9c5cb49928b3947674adccc26ce500998c6f96e6a
|
@@ -58,6 +58,7 @@ module Kitchen
|
|
58
58
|
default_config :memory_limit, 0
|
59
59
|
default_config :network_mode, "dokken"
|
60
60
|
default_config :pid_one_command, 'sh -c "trap exit 0 SIGTERM; while :; do sleep 1; done"'
|
61
|
+
default_config :platform, ""
|
61
62
|
default_config :ports, nil
|
62
63
|
default_config :privileged, false
|
63
64
|
default_config :pull_chef_image, true
|
@@ -136,28 +137,27 @@ module Kitchen
|
|
136
137
|
end
|
137
138
|
|
138
139
|
def delete_work_image
|
139
|
-
return unless ::Docker::Image.exist?(work_image, {}, docker_connection)
|
140
|
+
return unless ::Docker::Image.exist?(work_image, { "platform" => config[:platform] }, docker_connection)
|
140
141
|
|
141
|
-
with_retries { @work_image = ::Docker::Image.get(work_image, {}, docker_connection) }
|
142
|
+
with_retries { @work_image = ::Docker::Image.get(work_image, { "platform" => config[:platform] }, docker_connection) }
|
142
143
|
|
143
144
|
with_retries do
|
144
|
-
|
145
145
|
with_retries { @work_image.remove(force: true) }
|
146
146
|
rescue ::Docker::Error::ConflictError
|
147
147
|
debug "driver - #{work_image} cannot be removed"
|
148
|
-
|
149
148
|
end
|
150
149
|
end
|
151
150
|
|
152
151
|
def build_work_image(state)
|
153
152
|
info("Building work image..")
|
154
|
-
return if ::Docker::Image.exist?(work_image, {}, docker_connection)
|
153
|
+
return if ::Docker::Image.exist?(work_image, { "platform" => config[:platform] }, docker_connection)
|
155
154
|
|
156
155
|
begin
|
157
156
|
@intermediate_image = ::Docker::Image.build(
|
158
157
|
work_image_dockerfile,
|
159
158
|
{
|
160
159
|
"t" => work_image,
|
160
|
+
"platform" => config[:platform],
|
161
161
|
},
|
162
162
|
docker_connection
|
163
163
|
)
|
@@ -389,7 +389,7 @@ module Kitchen
|
|
389
389
|
lockfile = Lockfile.new "#{home_dir}/.dokken-#{chef_container_name}.lock"
|
390
390
|
begin
|
391
391
|
lockfile.lock
|
392
|
-
with_retries
|
392
|
+
with_retries do
|
393
393
|
# TEMPORARY FIX - docker-api 2.0.0 has a buggy Docker::Container.get - use .all instead
|
394
394
|
# https://github.com/swipely/docker-api/issues/566
|
395
395
|
# ::Docker::Container.get(chef_container_name, {}, docker_connection)
|
@@ -397,7 +397,7 @@ module Kitchen
|
|
397
397
|
raise ::Docker::Error::NotFoundError.new(chef_container_name) if found.empty?
|
398
398
|
|
399
399
|
debug "Chef container already exists, continuing"
|
400
|
-
|
400
|
+
end
|
401
401
|
rescue ::Docker::Error::NotFoundError
|
402
402
|
debug "Chef container does not exist, creating a new Chef container"
|
403
403
|
with_retries do
|
@@ -479,7 +479,7 @@ module Kitchen
|
|
479
479
|
end
|
480
480
|
|
481
481
|
def delete_image(name)
|
482
|
-
with_retries { @image = ::Docker::Image.get(name, {}, docker_connection) }
|
482
|
+
with_retries { @image = ::Docker::Image.get(name, { "platform" => config[:platform] }, docker_connection) }
|
483
483
|
with_retries { @image.remove(force: true) }
|
484
484
|
rescue ::Docker::Error
|
485
485
|
puts "Image #{name} not found. Nothing to delete."
|
@@ -551,10 +551,10 @@ module Kitchen
|
|
551
551
|
args["Env"] = [] if args["Env"].nil?
|
552
552
|
args["Env"] << "TEST_KITCHEN=1"
|
553
553
|
args["Env"] << "CI=#{ENV["CI"]}" if ENV.include? "CI"
|
554
|
+
args["Platform"] = config[:platform]
|
554
555
|
info "Creating container #{args["name"]}"
|
555
556
|
debug "driver - create_container args #{args}"
|
556
557
|
with_retries do
|
557
|
-
|
558
558
|
@container = ::Docker::Container.create(args.clone, docker_connection)
|
559
559
|
rescue ::Docker::Error::ConflictError
|
560
560
|
debug "driver - rescue ConflictError: #{args["name"]}"
|
@@ -563,7 +563,6 @@ module Kitchen
|
|
563
563
|
rescue ::Docker::Error => e
|
564
564
|
debug "driver - error :#{e}:"
|
565
565
|
raise "driver - failed to create_container #{args["name"]}"
|
566
|
-
|
567
566
|
end
|
568
567
|
end
|
569
568
|
|
@@ -612,7 +611,7 @@ module Kitchen
|
|
612
611
|
end
|
613
612
|
|
614
613
|
def chef_container_name
|
615
|
-
"chef-#{chef_version}"
|
614
|
+
config[:platform] != "" ? "chef-#{chef_version}-" + config[:platform].sub("/", "-") : "chef-#{chef_version}"
|
616
615
|
end
|
617
616
|
|
618
617
|
def chef_image
|
@@ -643,7 +642,7 @@ module Kitchen
|
|
643
642
|
end
|
644
643
|
|
645
644
|
def pull_if_missing(image)
|
646
|
-
return if ::Docker::Image.exist?(registry_image_path(image), {}, docker_connection)
|
645
|
+
return if ::Docker::Image.exist?(registry_image_path(image), { "platform" => config[:platform] }, docker_connection)
|
647
646
|
|
648
647
|
pull_image image
|
649
648
|
end
|
@@ -656,13 +655,13 @@ module Kitchen
|
|
656
655
|
def pull_image(image)
|
657
656
|
path = registry_image_path(image)
|
658
657
|
with_retries do
|
659
|
-
if Docker::Image.exist?(path, {}, docker_connection)
|
660
|
-
original_image = Docker::Image.get(path, {}, docker_connection)
|
658
|
+
if Docker::Image.exist?(path, { "platform" => config[:platform] }, docker_connection)
|
659
|
+
original_image = Docker::Image.get(path, { "platform" => config[:platform] }, docker_connection)
|
661
660
|
end
|
662
661
|
|
663
|
-
new_image = Docker::Image.create({ "fromImage" => path }, docker_creds_for_image(image), docker_connection)
|
662
|
+
new_image = Docker::Image.create({ "fromImage" => path, "platform" => config[:platform] }, docker_creds_for_image(image), docker_connection)
|
664
663
|
|
665
|
-
!(original_image
|
664
|
+
!(original_image&.id&.start_with?(new_image.id))
|
666
665
|
end
|
667
666
|
end
|
668
667
|
|
data/lib/kitchen/helpers.rb
CHANGED
@@ -19,40 +19,40 @@ module Dokken
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def insecure_ssh_public_key
|
22
|
-
|
23
|
-
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoJwyW7qNhw+NTuOjC4+RVpESl+JBXebXzB7JqxRgKAbymq6B39azEAiNx5NzHkWcQmOyQNhFpKFSAufegcXRS4ctS1LcElEoXe9brDAqKEBSkmnXYfZXMNIG0Enw4+5W/rZxHFCAlsUSAHYtYZEs+3CgbIWuHhZ95C8UC6nGLWHNZOjcbsYZFrnFfO0qg0ene2w8LKhxqj5X0MRSdCIn1IwyxIbl5NND5Yk1Hx8JKsJtTiNTdxssiMgmM5bvTbYQUSf8pbGrRI30VQKBgQ8/UkidZbaTfvzWXYpwcDUERSbzEYCvkUytTemZIv6uhpPxqkfjl6KEOOml/iGqquPEr test-kitchen-rsa
|
22
|
+
<<~EOF
|
23
|
+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoJwyW7qNhw+NTuOjC4+RVpESl+JBXebXzB7JqxRgKAbymq6B39azEAiNx5NzHkWcQmOyQNhFpKFSAufegcXRS4ctS1LcElEoXe9brDAqKEBSkmnXYfZXMNIG0Enw4+5W/rZxHFCAlsUSAHYtYZEs+3CgbIWuHhZ95C8UC6nGLWHNZOjcbsYZFrnFfO0qg0ene2w8LKhxqj5X0MRSdCIn1IwyxIbl5NND5Yk1Hx8JKsJtTiNTdxssiMgmM5bvTbYQUSf8pbGrRI30VQKBgQ8/UkidZbaTfvzWXYpwcDUERSbzEYCvkUytTemZIv6uhpPxqkfjl6KEOOml/iGqquPEr test-kitchen-rsa
|
24
24
|
EOF
|
25
25
|
end
|
26
26
|
|
27
27
|
def insecure_ssh_private_key
|
28
|
-
|
29
|
-
-----BEGIN RSA PRIVATE KEY-----
|
30
|
-
MIIEpAIBAAKCAQEAqCcMlu6jYcPjU7jowuPkVaREpfiQV3m18weyasUYCgG8pqug
|
31
|
-
d/WsxAIjceTcx5FnEJjskDYRaShUgLn3oHF0UuHLUtS3BJRKF3vW6wwKihAUpJp1
|
32
|
-
2H2VzDSBtBJ8OPuVv62cRxQgJbFEgB2LWGRLPtwoGyFrh4WfeQvFAupxi1hzWTo3
|
33
|
-
G7GGRa5xXztKoNHp3tsPCyocao+V9DEUnQiJ9SMMsSG5eTTQ+WJNR8fCSrCbU4jU
|
34
|
-
3cbLIjIJjOW7022EFEn/KWxq0SN9FUCgYEPP1JInWW2k3781l2KcHA1BEUm8xGAr
|
35
|
-
5FMrU3pmSL+roaT8apH45eihDjppf4hqqrjxKwIDAQABAoIBAEj7Cb/IOykHd/ay
|
36
|
-
XnOXrVZuQU03oI4WyR19zbYBbPmK33IHM1JdUmqP8wpPpnMHbJALj0DX9p6JXoOw
|
37
|
-
MwVzuGTwkuqUYAqgwbeHjDPfugNKD2uRjmwztXw3ncOl8jxZFRloJFfFKF6znWNt
|
38
|
-
bzkh7naN3upHiv/6wsgqj4tAbZ9oRC1crO6bsNr3P6YooiG5RRNpHepiyXphyhN6
|
39
|
-
We1p5ZOQ/pUSE0Ca4wTlUhJHTUPMz7VFs/8CH0loRIsGPBROarPkoLVF+/UNyX8e
|
40
|
-
+BGMhoUtQH2XvjEzWUl5jKJOnvKRIV+0j/upWXsPQKF5glVPmPrTVUAxThfu6rAa
|
41
|
-
4Z3JveECgYEA0Pz3Hl0SlPR79r2qofh1ZNa8zvQDL+iLopULwDiil5qlUxJ+DgOl
|
42
|
-
1kWXLhjdg/NfoTBHvBjdJu274YJgaGQOfCy5747YDVsakKOm4bI9+Jr2agshPyE6
|
43
|
-
f1RNmGL8K8fNtpGq4G14o+pSQOPNrEfcFKgm3sosZWJAWaA64hmtiXcCgYEAzfp6
|
44
|
-
FbodfUypAV5Zd6PCO2eJMjLdvGaNuH/Umo80WNV7XZ6iJ6MUeQe+YwxFJigjC3ii
|
45
|
-
ifLUj3kL7+wu7sEtkzS3zNd34KfhQ5fLADttfFgjjfm7IxlDD4ABaUgjwZM2gfXi
|
46
|
-
xCwRhwwNgilF6qABJ1CLt8JSqKubkqvO1P1gQu0CgYEA0GA6AcNpYK344Eey1/bF
|
47
|
-
DntyHKN+fglPGReldM7Dh4gBabgZid2nP+N5XtQaIpPKeQyLqgfckhEecTau68dA
|
48
|
-
Dh4Gcs6pq394GFmkbotrcPMJ2SgpySlXi1fCWrvvlbON8IiDqWxdiop74wmArFOm
|
49
|
-
I86ZmzBYXeo+IV869vAFcPcCgYBrvvyh5OuMIc++YYZXaRgvTueblLQc22CDBItI
|
50
|
-
FmUBmxqfTF3ycgJBlWVoFoENhq1eUMplctrx+hXeeSPLzM10VX1X79ZLdEYHv513
|
51
|
-
D58kDk7684mKwKotr34NfqkFl2ZJ8T+f8pVwmUNvtPtX0j8IO7/6bfIjPTFyNeFJ
|
52
|
-
1QjHuQKBgQC/LE05M4eeWXihZ7c7fyWHLyddcPdH48LRF9UH9yjKF84jXRT91uMv
|
53
|
-
XuIb2Qt4MLHABySsk653LDw/jTIGV26c068nZryq5OUPxk67Xgod54jKgOwjgjZS
|
54
|
-
X8N2N9ZNnORJqK374yGj1jWUU66mQhPvn49QpG8P2HEoh2RQjNvyHA==
|
55
|
-
-----END RSA PRIVATE KEY-----
|
28
|
+
<<~EOF
|
29
|
+
-----BEGIN RSA PRIVATE KEY-----
|
30
|
+
MIIEpAIBAAKCAQEAqCcMlu6jYcPjU7jowuPkVaREpfiQV3m18weyasUYCgG8pqug
|
31
|
+
d/WsxAIjceTcx5FnEJjskDYRaShUgLn3oHF0UuHLUtS3BJRKF3vW6wwKihAUpJp1
|
32
|
+
2H2VzDSBtBJ8OPuVv62cRxQgJbFEgB2LWGRLPtwoGyFrh4WfeQvFAupxi1hzWTo3
|
33
|
+
G7GGRa5xXztKoNHp3tsPCyocao+V9DEUnQiJ9SMMsSG5eTTQ+WJNR8fCSrCbU4jU
|
34
|
+
3cbLIjIJjOW7022EFEn/KWxq0SN9FUCgYEPP1JInWW2k3781l2KcHA1BEUm8xGAr
|
35
|
+
5FMrU3pmSL+roaT8apH45eihDjppf4hqqrjxKwIDAQABAoIBAEj7Cb/IOykHd/ay
|
36
|
+
XnOXrVZuQU03oI4WyR19zbYBbPmK33IHM1JdUmqP8wpPpnMHbJALj0DX9p6JXoOw
|
37
|
+
MwVzuGTwkuqUYAqgwbeHjDPfugNKD2uRjmwztXw3ncOl8jxZFRloJFfFKF6znWNt
|
38
|
+
bzkh7naN3upHiv/6wsgqj4tAbZ9oRC1crO6bsNr3P6YooiG5RRNpHepiyXphyhN6
|
39
|
+
We1p5ZOQ/pUSE0Ca4wTlUhJHTUPMz7VFs/8CH0loRIsGPBROarPkoLVF+/UNyX8e
|
40
|
+
+BGMhoUtQH2XvjEzWUl5jKJOnvKRIV+0j/upWXsPQKF5glVPmPrTVUAxThfu6rAa
|
41
|
+
4Z3JveECgYEA0Pz3Hl0SlPR79r2qofh1ZNa8zvQDL+iLopULwDiil5qlUxJ+DgOl
|
42
|
+
1kWXLhjdg/NfoTBHvBjdJu274YJgaGQOfCy5747YDVsakKOm4bI9+Jr2agshPyE6
|
43
|
+
f1RNmGL8K8fNtpGq4G14o+pSQOPNrEfcFKgm3sosZWJAWaA64hmtiXcCgYEAzfp6
|
44
|
+
FbodfUypAV5Zd6PCO2eJMjLdvGaNuH/Umo80WNV7XZ6iJ6MUeQe+YwxFJigjC3ii
|
45
|
+
ifLUj3kL7+wu7sEtkzS3zNd34KfhQ5fLADttfFgjjfm7IxlDD4ABaUgjwZM2gfXi
|
46
|
+
xCwRhwwNgilF6qABJ1CLt8JSqKubkqvO1P1gQu0CgYEA0GA6AcNpYK344Eey1/bF
|
47
|
+
DntyHKN+fglPGReldM7Dh4gBabgZid2nP+N5XtQaIpPKeQyLqgfckhEecTau68dA
|
48
|
+
Dh4Gcs6pq394GFmkbotrcPMJ2SgpySlXi1fCWrvvlbON8IiDqWxdiop74wmArFOm
|
49
|
+
I86ZmzBYXeo+IV869vAFcPcCgYBrvvyh5OuMIc++YYZXaRgvTueblLQc22CDBItI
|
50
|
+
FmUBmxqfTF3ycgJBlWVoFoENhq1eUMplctrx+hXeeSPLzM10VX1X79ZLdEYHv513
|
51
|
+
D58kDk7684mKwKotr34NfqkFl2ZJ8T+f8pVwmUNvtPtX0j8IO7/6bfIjPTFyNeFJ
|
52
|
+
1QjHuQKBgQC/LE05M4eeWXihZ7c7fyWHLyddcPdH48LRF9UH9yjKF84jXRT91uMv
|
53
|
+
XuIb2Qt4MLHABySsk653LDw/jTIGV26c068nZryq5OUPxk67Xgod54jKgOwjgjZS
|
54
|
+
X8N2N9ZNnORJqK374yGj1jWUU66mQhPvn49QpG8P2HEoh2RQjNvyHA==
|
55
|
+
-----END RSA PRIVATE KEY-----
|
56
56
|
EOF
|
57
57
|
end
|
58
58
|
|
@@ -61,29 +61,29 @@ X8N2N9ZNnORJqK374yGj1jWUU66mQhPvn49QpG8P2HEoh2RQjNvyHA==
|
|
61
61
|
if registry
|
62
62
|
from = "#{registry}/#{from}"
|
63
63
|
end
|
64
|
-
|
65
|
-
FROM #{from}
|
66
|
-
MAINTAINER Sean OMeara
|
67
|
-
ENV LANG en_US.UTF-8
|
64
|
+
<<~EOF
|
65
|
+
FROM #{from}
|
66
|
+
MAINTAINER Sean OMeara "sean@sean.io"
|
67
|
+
ENV LANG en_US.UTF-8
|
68
68
|
|
69
|
-
RUN yum -y install tar rsync openssh-server passwd git
|
70
|
-
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
|
69
|
+
RUN yum -y install tar rsync openssh-server passwd git
|
70
|
+
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
|
71
71
|
|
72
|
-
# uncomment to debug cert issues
|
73
|
-
# RUN echo 'root:dokkendokkendokken' | chpasswd
|
74
|
-
# RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
|
75
|
-
# RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
|
72
|
+
# uncomment to debug cert issues
|
73
|
+
# RUN echo 'root:dokkendokkendokken' | chpasswd
|
74
|
+
# RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
|
75
|
+
# RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
|
76
76
|
|
77
|
-
RUN mkdir -p /root/.ssh/
|
78
|
-
COPY authorized_keys /root/.ssh/authorized_keys
|
79
|
-
RUN chmod 700 /root/.ssh/
|
80
|
-
RUN chmod 600 /root/.ssh/authorized_keys
|
77
|
+
RUN mkdir -p /root/.ssh/
|
78
|
+
COPY authorized_keys /root/.ssh/authorized_keys
|
79
|
+
RUN chmod 700 /root/.ssh/
|
80
|
+
RUN chmod 600 /root/.ssh/authorized_keys
|
81
81
|
|
82
|
-
EXPOSE 22
|
83
|
-
CMD [ "/usr/sbin/sshd", "-D", "-p", "22", "-o", "UseDNS=no", "-o", "UsePrivilegeSeparation=no", "-o", "MaxAuthTries=60" ]
|
82
|
+
EXPOSE 22
|
83
|
+
CMD [ "/usr/sbin/sshd", "-D", "-p", "22", "-o", "UseDNS=no", "-o", "UsePrivilegeSeparation=no", "-o", "MaxAuthTries=60" ]
|
84
84
|
|
85
|
-
VOLUME /opt/kitchen
|
86
|
-
VOLUME /opt/verifier
|
85
|
+
VOLUME /opt/kitchen
|
86
|
+
VOLUME /opt/verifier
|
87
87
|
EOF
|
88
88
|
end
|
89
89
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-dokken
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean OMeara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docker-api
|
@@ -78,7 +78,7 @@ files:
|
|
78
78
|
- lib/kitchen/helpers.rb
|
79
79
|
- lib/kitchen/provisioner/dokken.rb
|
80
80
|
- lib/kitchen/transport/dokken.rb
|
81
|
-
homepage: https://github.com/
|
81
|
+
homepage: https://github.com/test-kitchen/kitchen-dokken
|
82
82
|
licenses:
|
83
83
|
- Apache-2.0
|
84
84
|
metadata: {}
|
@@ -90,14 +90,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
requirements:
|
91
91
|
- - ">="
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: '2.
|
93
|
+
version: '2.7'
|
94
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
|
-
rubygems_version: 3.
|
100
|
+
rubygems_version: 3.2.33
|
101
101
|
signing_key:
|
102
102
|
specification_version: 4
|
103
103
|
summary: A Test Kitchen Driver for Docker & Chef Infra optimized for rapid testing
|