forked from puppetlabs/puppetlabs-docker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstack.pp
79 lines (69 loc) · 2.13 KB
/
stack.pp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
# == Define: docker::stack
#
# A define that deploys Docker stacks or compose v3
#
# == Paramaters
#
# [*ensure*]
# This ensures that the stack is present or not.
# Defaults to present
#
# [*stack_name*]
# The name of the stack that you are deploying
# Defaults to undef
#
# [*bundle_file*]
# Path to a Distributed Application Bundle file
# Please note this is experimental
# Defaults to undef
#
# [*compose_file*]
# Path to a Compose file
# Defaults to undef
#
# [*prune*]
# Prune services that are no longer referenced
# Defaults to undef
#
# [*resolve_image*]
# Query the registry to resolve image digest and supported platforms
# Only accepts (“always”|“changed”|“never”)
# Defaults to undef
#
# [*with_registry_auth*]
# Send registry authentication details to Swarm agents
# Defaults to undef
define docker::stack(
Optional[Pattern[/^present$|^absent$/]] $ensure = 'present',
Optional[String] $stack_name = undef,
Optional[String] $bundle_file = undef,
Optional[String] $compose_file = undef,
Optional[String] $prune = undef,
Optional[String] $with_registry_auth = undef,
){
include docker::params
$docker_command = "${docker::params::docker_command} stack"
if $ensure == 'present'{
$docker_stack_flags = docker_stack_flags ({
stack_name => $stack_name,
bundle_file => $bundle_file,
compose_file => $compose_file,
prune => $prune,
with_registry_auth => $with_registry_auth,
})
$exec_stack = "${docker_command} deploy ${docker_stack_flags} ${stack_name}"
$unless_stack = "${docker_command} ls | grep ${stack_name}"
exec { "docker stack create ${stack_name}":
command => $exec_stack,
unless => $unless_stack,
path => ['/bin', '/usr/bin'],
}
}
if $ensure == 'absent'{
exec { "docker stack ${stack_name}":
command => "${docker_command} rm ${stack_name}",
onlyif => "${docker_command} ls | grep ${stack_name}",
path => ['/bin', '/usr/bin'],
}
}
}