Skip to content

Commit 545e1a3

Browse files
jonasdemoordavejrt
authored andcommitted
Add feature flag for managing Docker repositories and packages (#144)
Some people might want to use other modules or custom profiles for configuring and installing Docker. Using a feature flag to enable/disable the management of Docker makes the above possible.
1 parent 7f31360 commit 545e1a3

File tree

8 files changed

+116
-15
lines changed

8 files changed

+116
-15
lines changed

manifests/init.pp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@
6262
# This is a bool that sets a node to a worker.
6363
# defaults to false
6464
#
65+
# [*manage_docker*]
66+
# Whether or not to install Docker repositories and packages via this module.
67+
# Defaults to true.
68+
#
6569
# [*kube_api_advertise_address*]
6670
# This is the ip address that the want to api server to expose.
6771
# An example with hiera would be kubernetes::kube_api_advertise_address: "%{::ipaddress_enp0s8}"
@@ -279,6 +283,7 @@
279283
Optional[String] $cni_pod_cidr = $kubernetes::params::cni_pod_cidr,
280284
Boolean $controller = $kubernetes::params::controller,
281285
Boolean $worker = $kubernetes::params::worker,
286+
Boolean $manage_docker = $kubernetes::params::manage_docker,
282287
Optional[String] $kube_api_advertise_address = $kubernetes::params::kube_api_advertise_address,
283288
Optional[String] $etcd_version = $kubernetes::params::etcd_version,
284289
Optional[String] $etcd_ip = $kubernetes::params::etcd_ip,

manifests/packages.pp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
String $kubernetes_package_version = $kubernetes::kubernetes_package_version,
66
String $container_runtime = $kubernetes::container_runtime,
7+
Boolean $manage_docker = $kubernetes::manage_docker,
78
Optional[String] $docker_version = $kubernetes::docker_version,
89
Optional[String] $docker_package_name = $kubernetes::docker_package_name,
910
Boolean $controller = $kubernetes::controller,
@@ -43,7 +44,7 @@
4344
}
4445
}
4546

46-
if $container_runtime == 'docker' {
47+
if $container_runtime == 'docker' and $manage_docker == true {
4748
case $::osfamily {
4849
'Debian': {
4950
package { $docker_package_name:

manifests/params.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
$controller = false
2929
$bootstrap_controller = false
3030
$worker = false
31+
$manage_docker = true
3132
$kube_api_advertise_address = undef
3233
$etcd_ip = undef
3334
$etcd_initial_cluster = undef

manifests/repos.pp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
Optional[String] $docker_yum_gpgkey = $kubernetes::docker_yum_gpgkey,
1717
Optional[String] $docker_key_id = $kubernetes::docker_key_id,
1818
Optional[String] $docker_key_source = $kubernetes::docker_key_source,
19+
Boolean $manage_docker = $kubernetes::manage_docker,
1920
Boolean $create_repos = $kubernetes::create_repos,
2021

2122

@@ -33,7 +34,7 @@
3334
},
3435
}
3536

36-
if $container_runtime == 'docker' {
37+
if $container_runtime == 'docker' and $manage_docker == true {
3738
apt::source { 'docker':
3839
location => $docker_apt_location,
3940
repos => $docker_apt_repos,
@@ -46,7 +47,7 @@
4647
}
4748
}
4849
'RedHat': {
49-
if $container_runtime == 'docker' {
50+
if $container_runtime == 'docker' and $manage_docker == true {
5051
yumrepo { 'docker':
5152
descr => 'docker',
5253
baseurl => $docker_yum_baseurl,

manifests/service.pp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
class kubernetes::service (
44
String $container_runtime = $kubernetes::container_runtime,
55
Boolean $controller = $kubernetes::controller,
6+
Boolean $manage_docker = $kubernetes::manage_docker,
67
Optional[String] $cloud_provider = $kubernetes::cloud_provider,
78
){
89
file { '/etc/systemd/system/kubelet.service.d':
@@ -17,10 +18,14 @@
1718

1819
case $container_runtime {
1920
'docker': {
20-
service { 'docker':
21-
ensure => running,
22-
enable => true,
21+
22+
if $manage_docker == true {
23+
service { 'docker':
24+
ensure => running,
25+
enable => true,
26+
}
2327
}
28+
2429
}
2530

2631
'cri_containerd': {

spec/classes/packages_spec.rb

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require 'spec_helper'
22
describe 'kubernetes::packages', :type => :class do
3-
context 'with osfamily => RedHat and container_runtime => Docker' do
3+
context 'with osfamily => RedHat and container_runtime => Docker and manage_docker => true' do
44
let(:facts) do
55
{
66
:lsbdistcodename => 'xenial',
@@ -28,6 +28,7 @@
2828
'controller' => true,
2929
'docker_package_name' => 'docker-engine',
3030
'disable_swap' => true,
31+
'manage_docker' => true,
3132
}
3233
end
3334

@@ -67,6 +68,7 @@
6768
'controller' => true,
6869
'docker_package_name' => 'docker-engine',
6970
'disable_swap' => true,
71+
'manage_docker' => true,
7072
}
7173
end
7274

@@ -79,6 +81,45 @@
7981
it { should contain_package('kubeadm').with_ensure('1.10.2-00')}
8082

8183
end
84+
85+
context 'with osfamily => Debian and container_runtime => Docker and manage_docker => false' do
86+
let(:facts) do
87+
{
88+
:lsbdistcodename => 'xenial',
89+
:kernel => 'Linux',
90+
:osfamily => 'Debian',
91+
:operatingsystem => 'Ubuntu',
92+
:os => {
93+
:name => 'Ubuntu',
94+
:release => {
95+
:full => '16.04',
96+
},
97+
},
98+
}
99+
end
100+
let(:params) do
101+
{
102+
'container_runtime' => 'docker',
103+
'kubernetes_package_version' => '1.10.2',
104+
'docker_version' => '17.03.0~ce-0~ubuntu-xenial',
105+
'containerd_archive' =>'containerd-1.1.0.linux-amd64.tar.gz',
106+
'containerd_source' => 'https://github.com/containerd-1.1.0.linux-amd64.tar.gz',
107+
'etcd_archive' => 'etcd-v3.1.12-linux-amd64.tar.gz',
108+
'etcd_source' => 'https://github.com/etcd-v3.1.12.tar.gz',
109+
'runc_source' => 'https://github.com/runcsource',
110+
'controller' => true,
111+
'docker_package_name' => 'docker-engine',
112+
'disable_swap' => true,
113+
'manage_docker' => false,
114+
}
115+
end
116+
117+
it { should contain_archive('etcd-v3.1.12-linux-amd64.tar.gz')}
118+
it { should contain_package('kubelet').with_ensure('1.10.2')}
119+
it { should contain_package('kubectl').with_ensure('1.10.2')}
120+
it { should contain_package('kubeadm').with_ensure('1.10.2')}
121+
it { should_not contain_package('docker-engine').with_ensure('17.03.0~ce-0~ubuntu-xenial')}
122+
end
82123

83124
context 'with disable_swap => true' do
84125
let(:facts) do
@@ -107,7 +148,7 @@
107148
'controller' => true,
108149
'docker_package_name' => 'docker-engine',
109150
'disable_swap' => true,
110-
151+
'manage_docker' => true,
111152
}
112153
end
113154

spec/classes/repos_spec.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
describe 'kubernetes::repos', :type => :class do
33

44

5-
context 'with osfamily => Ubuntu' do
5+
context 'with osfamily => Ubuntu and manage_docker => true' do
66
let(:facts) do
77
{
88
:lsbdistcodename => 'xenial',
@@ -35,7 +35,8 @@
3535
'docker_key_id' => '58118E89F3A912897C070ADBF76221572C52609D',
3636
'docker_key_source' => 'https://apt.dockerproject.org/gpg',
3737
'create_repos' => true,
38-
}
38+
'manage_docker' => true,
39+
}
3940
end
4041

4142
it { should contain_apt__source('kubernetes').with(
@@ -56,7 +57,7 @@
5657

5758
end
5859

59-
context 'with osfamily => RedHat and manage_epel => true' do
60+
context 'with osfamily => RedHat and manage_epel => true and manage_docker => false' do
6061
let(:facts) do
6162
{
6263
:operatingsystem => 'RedHat',
@@ -82,11 +83,12 @@
8283
'docker_yum_gpgkey' => 'https://yum.dockerproject.org/gpg',
8384
'docker_key_id' => '58118E89F3A912897C070ADBF76221572C52609D',
8485
'docker_key_source' => 'https://apt.dockerproject.org/gpg',
85-
'create_repos' => true,
86+
'create_repos' => true,
87+
'manage_docker' => false,
8688
}
8789
end
8890

89-
it { should contain_yumrepo('docker') }
91+
it { should_not contain_yumrepo('docker') }
9092
it { should contain_yumrepo('kubernetes') }
9193
end
9294
end

spec/classes/service_spec.rb

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
'container_runtime' => 'cri_containerd',
5151
'controller' => true,
5252
'cloud_provider' => ':undef',
53-
53+
'manage_docker' => true,
5454
}
5555
end
5656
it { should contain_file('/etc/systemd/system/kubelet.service.d')}
@@ -61,7 +61,7 @@
6161
it { should contain_service('etcd')}
6262
end
6363

64-
context 'with controller => true and container_runtime => docker' do
64+
context 'with controller => true and container_runtime => docker and manage_docker => true' do
6565
let(:pre_condition) { 'class {"kubernetes::config":
6666
kubernetes_version => "1.10.2",
6767
container_runtime => "docker",
@@ -98,9 +98,54 @@
9898
'container_runtime' => 'docker',
9999
'controller' => true,
100100
'cloud_provider' => ':undef',
101+
'manage_docker' => true,
101102
}
102103
end
103104
it { should contain_service('docker')}
104105
it { should contain_service('etcd')}
105106
end
107+
108+
context 'with controller => true and container_runtime => docker and manage_docker => false' do
109+
let(:pre_condition) { 'class {"kubernetes::config":
110+
kubernetes_version => "1.10.2",
111+
container_runtime => "docker",
112+
etcd_version => "3.1.12",
113+
etcd_ca_key => "foo",
114+
etcd_ca_crt => "foo",
115+
etcdclient_key => "foo",
116+
etcdclient_crt => "foo",
117+
api_server_count => 3,
118+
kubernetes_ca_crt => "foo",
119+
kubernetes_ca_key => "foo",
120+
discovery_token_hash => "foo",
121+
sa_pub => "foo",
122+
sa_key => "foo",
123+
kube_api_advertise_address => "foo",
124+
cni_pod_cidr => "10.0.0.0/24",
125+
etcdserver_crt => "foo",
126+
etcdserver_key => "foo",
127+
etcdpeer_crt => "foo",
128+
etcdpeer_key => "foo",
129+
etcd_peers => ["foo"],
130+
etcd_ip => "foo",
131+
etcd_initial_cluster => "foo",
132+
token => "foo",
133+
apiserver_cert_extra_sans => ["foo"],
134+
apiserver_extra_arguments => ["foo"],
135+
service_cidr => "10.96.0.0/12",
136+
node_label => "foo",
137+
cloud_provider => ":undef",
138+
kubeadm_extra_config => {"foo" => ["bar", "baz"]},
139+
}' }
140+
let(:params) do
141+
{
142+
'container_runtime' => 'docker',
143+
'controller' => true,
144+
'cloud_provider' => ':undef',
145+
'manage_docker' => false,
146+
}
147+
end
148+
it { should_not contain_service('docker')}
149+
it { should contain_service('etcd')}
150+
end
106151
end

0 commit comments

Comments
 (0)