Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8392769
swarm.pp
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
swarm.pp
View Options
# @summary
# managers a Docker Swarm Mode cluster
#
# @param ensure
# This ensures that the cluster is present or not.
# Note this forcefully removes a node from the cluster. Make sure all worker nodes
# have been removed before managers
#
# @param init
# This creates the first worker node for a new cluster.
# Set init to true to create a new cluster
#
# @param join
# This adds either a worker or manger node to the cluster.
# The role of the node is defined by the join token.
# Set to true to join the cluster
#
# @param advertise_addr
# The address that your node will advertise to the cluster for raft.
# On multihomed servers this flag must be passed
#
# @param autolock
# Enable manager autolocking (requiring an unlock key to start a stopped manager)
#
# @param cert_expiry
# Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)
#
# @param default_addr_pool
# Array of default subnet pools for global scope networks (['30.30.0.0/16','40.40.0.0/16'])
#
# @param default_addr_pool_mask_length
# Default subnet pools mask length for default-addr-pools (CIDR block number)
#
# @param dispatcher_heartbeat
# Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)
#
# @param external_ca
# Specifications of one or more certificate signing endpoints
#
# @param force_new_cluster
# Force create a new cluster from current state
#
# @param listen_addr
# The address that your node will listen to the cluster for raft.
# On multihomed servers this flag must be passed
#
# @param max_snapshots
# Number of additional Raft snapshots to retain
#
# @param snapshot_interval
# Number of log entries between Raft snapshots (default 10000)
#
# @param token
# The authentication token to join the cluster. The token also defines the type of
# node (worker or manager)
#
# @param manager_ip
# The ip address of a manager node to join the cluster.
#
define
docker
::
swarm
(
Optional
[
Enum
[
present
,
absent
]]
$ensure
=
'present'
,
Optional
[
Boolean
]
$init
=
false
,
Optional
[
Boolean
]
$join
=
false
,
Optional
[
String
]
$advertise_addr
=
undef
,
Optional
[
Boolean
]
$autolock
=
false
,
Optional
[
String
]
$cert_expiry
=
undef
,
Optional
[
Array
]
$default_addr_pool
=
undef
,
Optional
[
String
]
$default_addr_pool_mask_length
=
undef
,
Optional
[
String
]
$dispatcher_heartbeat
=
undef
,
Optional
[
String
]
$external_ca
=
undef
,
Optional
[
Boolean
]
$force_new_cluster
=
false
,
Optional
[
String
]
$listen_addr
=
undef
,
Optional
[
String
]
$max_snapshots
=
undef
,
Optional
[
String
]
$snapshot_interval
=
undef
,
Optional
[
String
]
$token
=
undef
,
Optional
[
String
]
$manager_ip
=
undef
,
)
{
include
docker
::
params
if
$facts['os']
[
'family'
]
==
'windows'
{
$exec_environment
=
"PATH=${::docker_program_files_path}/Docker/"
$exec_path
=
[
"${::docker_program_files_path}/Docker/"
,
]
$exec_timeout
=
3000
$exec_provider
=
'powershell'
$unless_init
=
'$info = docker info | select-string -pattern "Swarm: active"
if ($info -eq $null) { Exit 1 } else { Exit 0 }'
$unless_join
=
'$info = docker info | select-string -pattern "Swarm: active"
if ($info -eq $null) { Exit 1 } else { Exit 0 }'
$onlyif_leave
=
'$info = docker info | select-string -pattern "Swarm: active"
if ($info -eq $null) { Exit 1 } else { Exit 0 }'
}
else
{
$exec_environment
=
'HOME=/root'
$exec_path
=
[
'/bin'
,
'/usr/bin'
,
]
$exec_timeout
=
0
$exec_provider
=
undef
$unless_init
=
'docker info | grep -w "Swarm: active"'
$unless_join
=
'docker info | grep -w "Swarm: active"'
$onlyif_leave
=
'docker info | grep -w "Swarm: active"'
}
$docker_command
=
"${docker::params::docker_command} swarm"
if
$init
{
$docker_swarm_init_flags
=
docker_swarm_init_flags
(
{
init
=>
$init,
advertise_addr
=>
$advertise_addr,
autolock
=>
$autolock,
cert_expiry
=>
$cert_expiry,
dispatcher_heartbeat
=>
$dispatcher_heartbeat,
default_addr_pool
=>
$default_addr_pool,
default_addr_pool_mask_length
=>
$default_addr_pool_mask_length,
external_ca
=>
$external_ca,
force_new_cluster
=>
$force_new_cluster,
listen_addr
=>
$listen_addr,
max_snapshots
=>
$max_snapshots,
snapshot_interval
=>
$snapshot_interval,
}
)
$exec_init
=
"${docker_command} ${docker_swarm_init_flags}"
exec
{
'Swarm init'
:
command
=>
$exec_init,
environment
=>
$exec_environment,
path
=>
$exec_path,
provider
=>
$exec_provider,
timeout
=>
$exec_timeout,
unless
=>
$unless_init,
}
}
if
$join
{
$docker_swarm_join_flags
=
docker_swarm_join_flags
(
{
join
=>
$join,
advertise_addr
=>
$advertise_addr,
listen_addr
=>
$listen_addr,
token
=>
$token,
}
)
$exec_join
=
"${docker_command} ${docker_swarm_join_flags} ${manager_ip}"
exec
{
'Swarm join'
:
command
=>
$exec_join,
environment
=>
$exec_environment,
path
=>
$exec_path,
provider
=>
$exec_provider,
timeout
=>
$exec_timeout,
unless
=>
$unless_join,
}
}
if
$ensure
==
'absent'
{
exec
{
'Leave swarm'
:
command
=>
'docker swarm leave --force'
,
onlyif
=>
$onlyif_leave,
path
=>
$exec_path,
provider
=>
$exec_provider,
}
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Jun 4 2025, 7:02 PM (10 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3304966
Attached To
R205 puppet-puppetlabs-docker
Event Timeline
Log In to Comment