81 lines
2.6 KiB
ObjectPascal
81 lines
2.6 KiB
ObjectPascal
|
# @summary
|
||
|
# deploys Docker stacks or compose v3
|
||
|
#
|
||
|
# @param ensure
|
||
|
# This ensures that the stack is present or not.
|
||
|
#
|
||
|
# @param stack_name
|
||
|
# The name of the stack that you are deploying
|
||
|
#
|
||
|
# @param bundle_file
|
||
|
# Path to a Distributed Application Bundle file
|
||
|
# Please note this is experimental
|
||
|
#
|
||
|
# @param prune
|
||
|
# Prune services that are no longer referenced
|
||
|
#
|
||
|
# @param resolve_image
|
||
|
# Query the registry to resolve image digest and supported platforms
|
||
|
# Only accepts ("always"|"changed"|"never")
|
||
|
#
|
||
|
# @param with_registry_auth
|
||
|
# Send registry authentication details to Swarm agents
|
||
|
#
|
||
|
# @param compose_files
|
||
|
define docker::stack (
|
||
|
Enum[present,absent] $ensure = 'present',
|
||
|
Optional[String] $stack_name = undef,
|
||
|
Optional[String] $bundle_file = undef,
|
||
|
Optional[Array] $compose_files = undef,
|
||
|
Boolean $prune = false,
|
||
|
Boolean $with_registry_auth = false,
|
||
|
Optional[Enum['always','changed','never']] $resolve_image = undef,
|
||
|
) {
|
||
|
include docker::params
|
||
|
|
||
|
deprecation('docker::stack','The docker stack define type will be deprecated in a future release. Please migrate to the docker_stack type/provider.')
|
||
|
|
||
|
$docker_command = "${docker::params::docker_command} stack"
|
||
|
|
||
|
if $facts['os']['family'] == 'windows' {
|
||
|
$exec_path = ['C:/Program Files/Docker/',]
|
||
|
$check_stack = '$info = docker stack ls | select-string -pattern web
|
||
|
if ($info -eq $null) { Exit 1 } else { Exit 0 }'
|
||
|
$provider = 'powershell'
|
||
|
} else {
|
||
|
$exec_path = ['/bin', '/usr/bin',]
|
||
|
$check_stack = "${docker_command} ls | grep '${stack_name}'"
|
||
|
$provider = undef
|
||
|
}
|
||
|
|
||
|
if $ensure == 'present' {
|
||
|
$docker_stack_flags = docker_stack_flags ({
|
||
|
stack_name => $stack_name,
|
||
|
bundle_file => $bundle_file,
|
||
|
compose_files => $compose_files,
|
||
|
prune => $prune,
|
||
|
with_registry_auth => $with_registry_auth,
|
||
|
resolve_image => $resolve_image,
|
||
|
}
|
||
|
)
|
||
|
|
||
|
$exec_stack = "${docker_command} deploy ${docker_stack_flags} ${stack_name}"
|
||
|
|
||
|
exec { "docker stack create ${stack_name}":
|
||
|
command => $exec_stack,
|
||
|
unless => $check_stack,
|
||
|
path => $exec_path,
|
||
|
provider => $provider,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if $ensure == 'absent' {
|
||
|
exec { "docker stack destroy ${stack_name}":
|
||
|
command => "${docker_command} rm ${stack_name}",
|
||
|
onlyif => $check_stack,
|
||
|
path => $exec_path,
|
||
|
provider => $provider,
|
||
|
}
|
||
|
}
|
||
|
}
|