35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
# File 'manifests/plugin.pp', line 35
define docker::plugin (
Enum[present,absent] $ensure = 'present',
String $plugin_name = $title,
Boolean $enabled = true,
Optional[String] $timeout = undef,
Optional[String] $plugin_alias = undef,
Boolean $disable_on_install = false,
Boolean $disable_content_trust = true,
Boolean $grant_all_permissions = true,
Boolean $force_remove = true,
Array $settings = [],
) {
include docker::params
$docker_command = "${docker::params::docker_command} plugin"
if ($facts['os']['family'] == 'windows') {
fail('Feature not implemented on windows.')
}
if $ensure == 'present' {
$docker_plugin_install_flags = docker_plugin_install_flags({
plugin_name => $plugin_name,
plugin_alias => $plugin_alias,
disable_on_install => $disable_on_install,
disable_content_trust => $disable_content_trust,
grant_all_permissions => $grant_all_permissions,
settings => $settings,
}
)
$exec_install = "${docker_command} install ${docker_plugin_install_flags}"
$unless_install = "${docker_command} ls --format='{{.PluginReference}}' | grep -w ${plugin_name}"
exec { "plugin install ${plugin_name}":
command => $exec_install,
environment => 'HOME=/root',
path => ['/bin', '/usr/bin'],
timeout => 0,
unless => $unless_install,
}
} elsif $ensure == 'absent' {
$docker_plugin_remove_flags = docker_plugin_remove_flags({
plugin_name => $plugin_name,
force_remove => $force_remove,
}
)
$exec_rm = "${docker_command} rm ${docker_plugin_remove_flags}"
$onlyif_rm = "${docker_command} ls --format='{{.PluginReference}}' | grep -w ${plugin_name}"
exec { "plugin remove ${plugin_name}":
command => $exec_rm,
environment => 'HOME=/root',
path => ['/bin', '/usr/bin'],
timeout => 0,
onlyif => $onlyif_rm,
}
}
if $enabled {
$docker_plugin_enable_flags = docker_plugin_enable_flags({
plugin_name => $plugin_name,
plugin_alias => $plugin_alias,
timeout => $timeout,
}
)
$exec_enable = "${docker_command} enable ${docker_plugin_enable_flags}"
$onlyif_enable = "${docker_command} ls -f enabled=false --format='{{.PluginReference}}' | grep -w ${plugin_name}"
exec { "plugin enable ${plugin_name}":
command => $exec_enable,
environment => 'HOME=/root',
path => ['/bin', '/usr/bin'],
timeout => 0,
onlyif => $onlyif_enable,
}
} elsif $enabled == false {
exec { "disable ${plugin_name}":
command => "${docker_command} disable ${plugin_name}",
environment => 'HOME=/root',
path => ['/bin', '/usr/bin',],
timeout => 0,
unless => "${docker_command} ls -f enabled=false --format='{{.PluginReference}}' | grep -w ${plugin_name}",
}
}
}
|