Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9123697
services.pp
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
services.pp
View Options
# == Define: docker::services
#
# A define that managers a Docker services
#
# == Paramaters
#
# [*ensure*]
# This ensures that the service is present or not.
# Defaults to present
#
# [*image*]
# The Docker image to spwan the service from.
# Defualts to undef
#
# [*detach*]
# Exit immediately instead of waiting for the service to converge (default true)
# Defaults to true
#
# [*env*]
# Set environment variables
# Defaults to []
#
# [*label*]
# Service labels.
# This used as metdata to configure constraints etc.
# Defaults to []
#
# [*publish*]
# Publish a port as a node port.
# Defaults to undef
#
# [*replicas*]
# Number of tasks (containers per service)
# defaults to undef
#
# [*tty*]
# Allocate a pseudo-TTY
# Defaults to false
#
# [*user*]
# Username or UID (format: <name|uid>[:<group|gid>])
# Defaults to undef
#
# [*workdir*]
# Working directory inside the container
# Defaults to false
#
# [*extra_params*]
# Allows you to pass any other flag that the Docker service create supports.
# This must be passed as an array. See docker service create --help for all options
# defaults to []
#
# [*update*]
# This changes the docker command to
# docker service update, you must pass a service name with this option
#
# [*scale*]
# This changes the docker command to
# docker service scale, this can only be used with service name and
# replicas
#
# [*host_socket*]
# This will allow the service to connect to the host linux socket.
# defaults to undef
#
define
docker
::
services
(
$ensure
=
'present'
,
$create
=
true
,
$update
=
false
,
$scale
=
false
,
$detach
=
true
,
$tty
=
false
,
$env
=
[],
$label
=
[],
$extra_params
=
[],
$image
=
undef
,
$service_name
=
undef
,
$publish
=
undef
,
$replicas
=
undef
,
$user
=
undef
,
$workdir
=
undef
,
$host_socket
=
undef
,
){
include
docker
::
params
$docker_command
=
"${docker::params::docker_command} service"
validate_re
(
$ensure,
'^(present|absent)$'
)
validate_string
(
$docker_command)
validate_string
(
$image)
validate_string
(
$service_name)
validate_string
(
$publish)
validate_string
(
$replicas)
validate_string
(
$user)
validate_string
(
$workdir)
validate_string
(
$host_socket)
validate_bool
(
$detach)
validate_bool
(
$tty)
validate_bool
(
$create)
validate_bool
(
$update)
validate_bool
(
$scale)
if
$ensure
==
'absent'
{
if
$update
{
fail
(
'When removing a service you can not update it.'
)
}
if
$scale
{
fail
(
'When removing a service you can not update it.'
)
}
}
if
$create
{
$docker_service_create_flags
=
docker_service_flags
({
detach
=>
$detach,
env
=>
any2array
(
$env),
service_name
=>
$service_name,
label
=>
any2array
(
$label),
publish
=>
$publish,
replicas
=>
$replicas,
tty
=>
$tty,
user
=>
$user,
workdir
=>
$workdir,
extra_params
=>
any2array
(
$extra_params),
image
=>
$image,
host_socket
=>
$host_socket,
})
$exec_create
=
"${docker_command} create --name ${docker_service_create_flags}"
$unless_create
=
"docker service ls | grep -w ${service_name}"
exec
{
"${title} docker service create"
:
command
=>
$exec_create,
environment
=>
'HOME=/root'
,
path
=>
[
'/bin'
,
'/usr/bin'
],
timeout
=>
0
,
unless
=>
$unless_create,
}
}
if
$update
{
$docker_service_flags
=
docker_service_flags
({
detach
=>
$detach,
env
=>
any2array
(
$env),
service_name
=>
$service_name,
label
=>
any2array
(
$label),
publish
=>
$publish,
replicas
=>
$replicas,
tty
=>
$tty,
user
=>
$user,
workdir
=>
$workdir,
extra_params
=>
any2array
(
$extra_params),
image
=>
$image,
host_socket
=>
$host_socket,
})
$exec_update
=
"${docker_command} update ${docker_service_flags}"
exec
{
"${title} docker service update"
:
command
=>
$exec_update,
environment
=>
'HOME=/root'
,
path
=>
[
'/bin'
,
'/usr/bin'
],
timeout
=>
0
,
}
}
if
$scale
{
$docker_service_flags
=
docker_service_flags
({
service_name
=>
$service_name,
replicas
=>
$replicas,
extra_params
=>
any2array
(
$extra_params),
})
$exec_scale
=
"${docker_command} scale ${service_name}=${replicas}"
exec
{
"${title} docker service scale"
:
command
=>
$exec_scale,
environment
=>
'HOME=/root'
,
path
=>
[
'/bin'
,
'/usr/bin'
],
timeout
=>
0
,
}
}
if
$ensure
==
'absent'
{
exec
{
"${title} docker service remove"
:
command
=>
"docker service rm ${service_name}"
,
onlyif
=>
"docker service ls | grep -w ${service_name}"
,
path
=>
[
'/bin'
,
'/usr/bin'
],
}
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jun 21, 5:57 PM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3357900
Attached To
R205 puppet-puppetlabs-docker
Event Timeline
Log In to Comment