Version information
This version is compatible with:
- Puppet Enterprise 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
- Puppet >= 4.0.0
- Archlinux, Gentoo, , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'puppetlabs-docker', '1.0.1'
Learn more about managing modules with a PuppetfileDocumentation
Docker
Table of Contents
- Description
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
Overview
The Puppet docker module installs, configures, and manages Docker from the Docker repository or from the EPEL on RedHat based distributions.
Description
This module installs, configures, and manages Docker.
- Debian 8.0
- Debian 9.0
- Ubuntu 14.04
- Ubuntu 16.04
- Centos 7.0
Usage
To create the Docker hosted repository and install the Docker package, add a single class to the manifest file:
include 'docker'
If you are using Ubuntu, all the required Kernel extensions are installed. To disable this feature, add the following code to the manifest file:
class { 'docker':
manage_kernel => false,
}
To configure package sources independently and disable automatically including sources, add the following code to the manifest file:
class { 'docker':
use_upstream_package_source => false,
}
The latest Docker repositories are now the default repositories for version 5 and above. To use previous repositories, add the following code to the manifest file:
class { 'docker':
package_name => 'lxc-docker',
package_source_location => 'https://get.docker.com/ubuntu',
package_key_source => 'https://get.docker.com/gpg',
package_key => '36A1D7869245C8950F966E92D8576A8BA88D21E',
package_release => 'docker',
}
Docker provides a commercially supported version of the Docker Engine, called Docker CS. To install Docker DS, add the following code to the manifest file:
class { 'docker':
docker_cs => true,
}
For Red Hat Enterprise Linux (RHEL) based distributions, including Fedora, the docker module uses the upstream repositories. To continue using the distribution packages, add the following code to the manifest file:
class { 'docker':
use_upstream_package_source => false,
package_name => 'docker',
}
By default, the Docker daemon binds to a unix socket at /var/run/docker.sock
. To change this parameter and to update the binding parameter to a tcp socket, add the following code to the manifest file:
class { 'docker':
tcp_bind => ['tcp://127.0.0.1:4243','tcp://10.0.0.1:4243'],
socket_bind => 'unix:///var/run/docker.sock',
ip_forward => true,
iptables => true,
ip_masq => true,
bridge => br0,
fixed_cidr => '10.20.1.0/24',
default_gateway => '10.20.0.1',
}
If setting up TLS, upload the related files (such as CA certificate, server certificate, and key) and include their paths in the manifest file:
class { 'docker':
tcp_bind => ['tcp://0.0.0.0:2376'],
tls_enable => true,
tls_cacert => '/etc/docker/tls/ca.pem',
tls_cert => '/etc/docker/tls/cert.pem',
tls_key => '/etc/docker/tls/key.pem',
}
Only the latest version of Docker supports Archlinux. To specify which version of Docker to install, add the following code to the manifest file:
class { 'docker':
version => '0.5.5',
}
To specify which Docker rpm package to install, add the following code to the manifest file:
class { 'docker' :
manage_package => true,
use_upstream_package_source => false,
package_name => 'docker-engine'
package_source => 'https://get.docker.com/rpm/1.7.0/centos-6/RPMS/x86_64/docker-engine-1.7.0-1.el6.x86_64.rpm',
prerequired_packages => [ 'glibc.i686', 'glibc.x86_64', 'sqlite.i686', 'sqlite.x86_64', 'device-mapper', 'device-mapper-libs', 'device-mapper-event-libs', 'device-mapper-event' ]
}
To track the latest version of Docker, add the following code to the manifest file:
class { 'docker':
version => 'latest',
}
To allocate a dns server to the Docker daemon, add the following code to the manifest file:
class { 'docker':
dns => '8.8.8.8',
}
To add users to the Docker group, add the following array to the manifest file:
class { 'docker':
docker_users => ['user1', 'user2'],
}
To add daemon labels, add the following array to the manifest file:
class { 'docker':
labels => ['storage=ssd','stage=production'],
}
Images
Each image name must be unique, otherwise the installation fails when a duplicate name is detected.
To install a Docker image, add the docker::image
defined type to the manifest file:
docker::image { 'base': }
The code above is equivalent to running the docker pull base
command. However, it removes the default five minute execution timeout.
To include an optional parameter for installing image tags that is the equivalent to running docker pull -t="precise" ubuntu
, add the following code to the manifest file:
docker::image { 'ubuntu':
image_tag => 'precise'
}
Including the docker_file
parameter is equivalent to running the docker build -t ubuntu - < /tmp/Dockerfile
command. To add or build an image from a dockerfile that includes the docker_file
parameter, add the following code to the manifest file:
docker::image { 'ubuntu':
docker_file => '/tmp/Dockerfile'
}
Including the docker_dir
parameter is equivalent to running the docker build -t ubuntu /tmp/ubuntu_image
command. To add or build an image from a dockerfile that includes the docker_dir
parameter, add the following code to the manifest file:
docker::image { 'ubuntu':
docker_dir => '/tmp/ubuntu_image'
}
To rebuild an image, subscribe to external events such as Dockerfile changes by adding the following code to the manifest file:
docker::image { 'ubuntu':
docker_file => '/tmp/Dockerfile'
subscribe => File['/tmp/Dockerfile'],
}
file { '/tmp/Dockerfile':
ensure => file,
source => 'puppet:///modules/someModule/Dockerfile',
}
To remove an image, add the following code to the manifest file:
docker::image { 'base':
ensure => 'absent'
}
docker::image { 'ubuntu':
ensure => 'absent',
image_tag => 'precise'
}
To configure the docker::images
class when using Hiera, add the following code to the manifest file:
---
classes:
- docker::images
docker::images::images:
ubuntu:
image_tag: 'precise'
Containers
To launch containers, add the following code to the manifest file:
docker::run { 'helloworld':
image => 'base',
command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"',
}
This is equivalent to running the docker run -d base /bin/sh -c "while true; do echo hello world; sleep 1; done"
command to launch a Docker container managed by the local init system.
run
includes a number of optional parameters:
docker::run { 'helloworld':
image => 'base',
command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"',
ports => ['4444', '4555'],
expose => ['4666', '4777'],
links => ['mysql:db'],
net => 'my-user-def-net',
volumes => ['/var/lib/couchdb', '/var/log'],
volumes_from => '6446ea52fbc9',
memory_limit => '10m', # (format: '<number><unit>', where unit = b, k, m or g)
cpuset => ['0', '3'],
username => 'example',
hostname => 'example.com',
env => ['FOO=BAR', 'FOO2=BAR2'],
env_file => ['/etc/foo', '/etc/bar'],
dns => ['8.8.8.8', '8.8.4.4'],
restart_service => true,
privileged => false,
pull_on_start => false,
before_stop => 'echo "So Long, and Thanks for All the Fish"',
before_start => 'echo "Run this on the host before starting the Docker container"',
after => [ 'container_b', 'mysql' ],
depends => [ 'container_a', 'postgres' ],
extra_parameters => [ '--restart=always' ],
}
You can specify the ports, expose, env, dns, and volumes values with a single string or an array.
To pull the image before it starts, specify the pull_on_start
parameter.
To execute a command before the container stops, specify the before_stop
parameter.
Add the container name to the after
parameter to specify which containers start first. This affects the generation of the init.d/systemd
script.
Add container dependencies to the depends
parameter. The container starts before this container and stops before the depended container. This affects the generation of the init.d/systemd
script. Use the depend_services
parameter to specify dependencies for generic services, which are not Docker related, that start before this container.
The extra_parameters
parameter contains an array of command line arguments to pass to the docker run
command. This parameter is useful for adding additional or experimental options that the docker module currently does not support.
By default, automatic restarting of the service on failure is enabled by the service file for systemd based systems.
To use an image tag, add the following code to the manifest file:
docker::run { 'helloworld':
image => 'ubuntu:precise',
command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"',
}
By default, when the service is stopped or started the generated init scripts remove the container, but not the associated volumes. To change this behaviour, add the following code to the manifest file:
docker::run { 'helloworld':
remove_container_on_start => true,
remove_volume_on_start => false,
remove_container_on_stop => true,
remove_volume_on_stop => false,
}
If using Hiera, you can configure the docker::run_instance
class:
---
classes:
- docker::run_instance
docker::run_instance::instance:
helloworld:
image: 'ubuntu:precise'
command: '/bin/sh -c "while true; do echo hello world; sleep 1; done"'
Networks
Docker 1.9.x officially supports networks. To expose the docker_network
type, which is used to manage networks, add the following code to the manifest file:
docker_network { 'my-net':
ensure => present,
driver => 'overlay',
subnet => '192.168.1.0/24',
gateway => '192.168.1.1',
ip_range => '192.168.1.4/32',
}
The name value and the ensure
parameter are required. If you do not include the driver
value, the default bridge is used. The Docker daemon must be configured for some networks and an example would be configuring the cluster store for the overlay network.
To configure the cluster store, update the docker
class in the manifest file:
extra_parameters => '--cluster-store=<backend>://172.17.8.101:<port> --cluster-advertise=<interface>:2376'
If using Hiera, configure the docker::networks
class in the manifest file:
---
classes:
- docker::networks
docker::networks::networks:
local-docker:
ensure: 'present'
subnet: '192.168.1.0/24'
gateway: '192.168.1.1'
A defined network can be used on a docker::run
resource with the net
parameter.
Compose
Docker Compose describes a set of containers in YAML format and runs a command to build and run those containers. Included in the docker module is the docker_compose
type. This enables Puppet to run Compose and remediate any issues to ensure reality matches the model in your Compose file.
You must install the Docker Compose utility, before you use the docker_compose
type.
To install Docker Compose, add the following code to the manifest file:
class {'docker::compose':
ensure => present,
}
This is a example of a Compose file:
compose_test:
image: ubuntu:14.04
command: /bin/sh -c "while true; do echo hello world; sleep 1; done"
Specify the file
resource to add a Compose file to the machine you have Puppet running on. To define a docker_compose
resource pointing to the Compose file, add the following code to the manifest file:
docker_compose { '/tmp/docker-compose.yml':
ensure => present,
}
Puppet automatically runs Compose, because the relevant Compose services aren't running. You can include additional options, such as enabling experimental features, as well as including scaling rules.
In the example below, Puppet runs Compose when the number of containers specified for a service don't match the scale values.
docker_compose { '/tmp/docker-compose.yml':
ensure => present,
scale => {
'compose_test' => 2,
},
options => '--x-networking'
}
You can also give options to the docker-compose up
command, such as --remove-orphans``, by using the
up_args``` option.
If you are using a v3.2 compose file or above on a Docker Swarm cluster, you must use the docker::stack
class. Include the file resource before you run the stack command.
To deploy the stack, add the following code to the manifest file:
docker::stack { 'yourapp':
ensure => present,
stack_name => 'yourapp',
compose_file => '/tmp/docker-compose.yaml',
require => [Class['docker'], File['/tmp/docker-compose.yaml']],
}
To remove the stack set ensure => absent
.
If you are using a compose file v3.2 or above on a Docker Swarm cluster, include the docker::stack
class. Like with older versions of Docker, compose the file resource needs before you run the stack command. To deploy the stack, add the following code to the manifest file.
docker::stack { 'yourapp':
ensure => present,
stack_name => 'yourapp',
compose_file => '/tmp/docker-compose.yaml',
require => [Class['docker'], File['/tmp/docker-compose.yaml']],
}
To remove the stack, set ensure => absent
.
Swarm mode
To natively manage a cluster of Docker Engines known as a swarm, Docker Engine 1.12 includes a swarm mode.
To cluster your Docker engines, use one of the following Puppet resources:
Swarm manager
To configure the swarm manager, add the following code to the manifest file:
docker::swarm {'cluster_manager':
init => true,
advertise_addr => '192.168.1.1',
listen_addr => '192.168.1.1',
}
For a multihomed server and to enable cluster communications between the node, include the advertise_addr
and listen_addr
parameters.
Swarm worker
To configure the swarm worker, add the following code to the manifest file:
docker::swarm {'cluster_worker':
join => true,
advertise_addr => '192.168.1.2',
listen_addr => '192.168.1.2,
manager_ip => '192.168.1.1',
token => 'SWMTKN-1-2lw8bnr57qsu74d6iq2q1wr2wq2i334g7425dfr3zucimvh4bl-2vwn6gysbdj605l37c61iixie'
}
To configure a worker node or a second manager, include the swarm manager IP address in the manager_ip
parameter. To define the role of the node in the cluster, include the token
parameter. When creating another swarm manager and a worker node, separate tokens are required.
To remove a node from a cluster, add the following code to the manifest file:
docker::swarm {'cluster_worker':
ensure => absent
}
Docker services
Docker services create distributed applications across multiple swarm nodes. Each Docker service contains a set of containers which are replicated across the swarm.
To create a Docker service, add the following code to the manifest file:
docker::services {'redis':
create => true,
service_name => 'redis',
image => 'redis:latest',
publish => '6379:639',
replicas => '5',
extra_params => ['--update-delay 1m', '--restart-window 30s']
}
To base the service off an image, include the image
parameter and include the publish
parameter to expose the service ports. To set the amount of containers running in the service, include the replicas
parameter. For information regarding the extra_params
parameter, see docker service create --help
.
To update the service, add the following code to the manifest file:
docker::services {'redis_update':
create => false,
update => true,
service_name => 'redis',
replicas => '3',
}
To update a service without creating a new one, include the the update => true
parameter and the create => false
parameter.
To scale a service, add the following code to the manifest file:
docker::services {'redis_scale':
create => false,
scale => true,
service_name => 'redis',
replicas => '10',
}
To scale the service without creating a new one, include the the scale => true
parameter and the create => false
parameter. In the example above, the service is scaled to 10.
To remove a service, add the following code to the manifest file:
docker::services {'redis':
ensure => 'absent',
service_name => 'redis',
}
To remove the service from a swarm, include the ensure => absent
parameter and the service_name
parameter.
Private registries
If a server is not specified, images are pushed and pulled from index.docker.io. To qualify your image name, create a private repository without authentication.
To configure authentication for a private registry, add the following code to the manifest file:
docker::registry { 'example.docker.io:5000':
username => 'user',
password => 'secret',
email => 'user@example.com',
}
If using hiera, configure the docker::registry_auth
class:
docker::registry_auth::registries:
'example.docker.io:5000':
username: 'user1'
password: 'secret'
email: 'user1@example.io'
}
To log out of a registry, add the following code to the manifest file:
docker::registry { 'example.docker.io:5000':
ensure => 'absent',
}
Exec
Within the context of a running container, the docker module supports arbitrary commands:
docker::exec { 'cron_allow_root':
detach => true,
container => 'mycontainer',
command => '/bin/echo root >> /usr/lib/cron/cron.allow',
tty => true,
unless => 'grep root /usr/lib/cron/cron.allow 2>/dev/null',
}
Reference
Parameters
version
The version of the package to install.
Defaults to undefined
.
ensure
Passed to the docker package.
Defaults to present
.
prerequired_packages
An array of packages that are required to support Docker.
docker_cs
Specifies whether to use the Commercial Support (CS) Docker packages.
Values 'true','false'
.
Defaults to false
.
tcp_bind
The tcp socket to bind to. The format is tcp://127.0.0.1:4243.
Defaults to undefined
.
tls_enable
Specifies whether to enable TLS.
Values 'true','false'
.
Defaults to false
.
tls_verify
Specifies whether to use TLS and verify the remote.
Values 'true','false'
.
Defaults to true
.
tls_cacert
The directory for the TLS CA certificate.
Defaults to '/etc/docker/ca.pem'
.
tls_cert
The directory for the TLS certificate file.
Defaults to '/etc/docker/cert.pem'
.
tls_key
The directory for the TLS key file.
Defaults to '/etc/docker/cert.key'
.
ip_forward
Specifies whether to enable IP forwarding on the Docker host.
Values 'true','false'
.
Defaults to true
.
iptables
Specifies whether to enable Docker's addition of iptables rules.
Values 'true','false'
.
Defaults to true
.
ip_masq
Specifies whether to enable IP masquerading for the bridge's IP range.
Values 'true','false'
.
Defaults to true
.
icc
Enable the Docker unrestricted inter-container and the daemon host communication.
To disable, it requires iptables=true
.
Defaults to undef. The default value for the Docker daemon is true
.
bip
Specifies the Docker network bridge IP in CIDR notation.
Defaults to undefined
.
mtu
Docker network MTU.
Defaults to undefined
.
bridge
Attach containers to a pre-existing network bridge. To disable container networking, include none
.
Defaults to undefined
.
fixed_cidr
IPv4 subnet for fixed IPs 10.20.0.0/16.
Defaults to undefined
.
default_gateway
IPv4 address for the container default gateway. This address must be part of the bridge subnet (which is defined by bridge).
Defaults to undefined
.
socket_bind
The unix socket to bind to.
Defaults to unix:///var/run/docker.sock.
log_level
Sets the logging level.
Defaults to undef. If no value is specified, Docker defaults to info
.
Valid values: debug
, info
, warn
, error
, and fatal
.
log_driver
Sets the log driver.
Defaults to undef.
Docker default is json-file
.
Valid values:
none
: disables logging for the container. Docker logs are not available with this driver.json-file
: the default Docker logging driver that writes JSON messages to file.syslog
: syslog logging driver that writes log messages to syslog.journald
: journald logging driver that writes log messages to journald.gelf
: Graylog Extended Log Format (GELF) logging driver that writes log messages to a GELF endpoint: Graylog or Logstash.fluentd
: fluentd logging driver that writes log messages to fluentd (forward input).splunk
: Splunk logging driver that writes log messages to Splunk (HTTP Event Collector).
log_opt
Define the log driver option.
Defaults to undef.
Valid values:
none
: undefjson-file
: max-size=[0-9+][k|m|g] max-file=[0-9+]syslog
: syslog-address=[tcp|udp]://host:port, syslog-address=unix://path, syslog-facility=daemon|kern|user|mail|auth, syslog|lpr|news|uucp|cron, authpriv|ftp, local0|local1|local2|local3, local4|local5|local6|local7, syslog-tag="some_tag"journald
: undefgelf
: gelf-address=udp://host:port, gelf-tag="some_tag"fluentd
: fluentd-address=host:port, fluentd-tag={{.ID}} - short container id (12 characters), {{.FullID}} - full container id, {{.Name}} - container namesplunk
: splunk-token=<splunk_http_event_collector_token>, splunk-url=https://your_splunk_instance:8088|
selinux_enabled
Specifies whether to enable selinux support. SELinux supports the BTRFS storage driver.
Valid values are true
, false
.
Defaults to false
.
use_upstream_package_source
Specifies whether to use the upstream package source.
Valid values are true
, false
.
When you run your own package mirror, set the value to false
.
pin_upstream_package_source
Specifies whether to use the pin upstream package source. This option relates to apt-based distributions.
Valid values are true
, false
.
Defaults to true
.
Set to false
to remove pinning on the upstream package repository. See also apt_source_pin_level
.
apt_source_pin_level
The level to pin your source package repository to. This relates to an apt-based system (such as Debian, Ubuntu, etc). Include $use_upstream_package_source and set the value to true
.
To disable pinning, set the value to false
.
Defaults to 10
.
package_source_location
Specifies the location of the package source.
For Debian, the value defaults to http://get.docker.com/ubuntu
.
service_state
Specifies whether to start the Docker daemon.
Defaults to running
.
service_enable
Specifies whether the Docker daemon starts up at boot.
Valid values are true
, false
.
Defaults to true
.
manage_service
Specifies whether the service should be managed.
Valid values are true
, `false'.
Defaults to `true'.
root_dir
The custom root directory for the containers.
Defaults to undefined
.
manage_kernel
Specifies whether to install the Kernel required by Docker.
Valid values are true
, false
.
Defaults to true
.
dns
The custom dns server address.
Defaults to undefined
.
dns_search
The custom dns search domains.
Defaults to undefined
.
socket_group
Group ownership of the unix control socket.
Defaults to undefined
.
extra_parameters
Extra parameters that should be passed to the Docker daemon.
Defaults to undefined
.
shell_values
The array of shell values to pass into the init script config files.
proxy
Defines the http_proxy and https_proxy env
variables in /etc/sysconfig/docker
(redhat/centos) or /etc/default/docker
(debian).
no_proxy
Sets the no_proxy
variable in /etc/sysconfig/docker
(redhat/centos) or /etc/default/docker
(debian).
storage_driver
Defines the storage driver to use.
Default is undef: let docker choose the correct one.
Valid values: aufs
, devicemapper
, btrfs
, overlay
, overlay2
, vfs
, and zfs
.
dm_basesize
The size to use when creating the base device, which limits the size of images and containers.
Default value is 10G
.
dm_fs
The filesystem to use for the base image (xfs or ext4).
Defaults to ext4
.
dm_mkfsarg
Specifies extra mkfs arguments to be used when creating the base device.
dm_mountopt
Specifies extra mount options used when mounting the thin devices.
dm_blocksize
A custom blocksize for the thin pool.
Default blocksize is 64K
.
Do not change this parameter after the lvm devices initialize.
dm_loopdatasize
Specifies the size to use when creating the loopback file for the data device which is used for the thin pool.
Default size is 100G
.
dm_loopmetadatasize
Specifies the size to use when creating the loopback file for the metadata device which is used for the thin pool.
Default size is 2G
.
dm_datadev
This is deprecated. Use dm_thinpooldev
.
A custom blockdevice to use for data for the thin pool.
dm_metadatadev
This is deprecated. Use dm_thinpooldev
.
A custom blockdevice to use for metadata for the thin pool.
dm_thinpooldev
Specifies a custom block storage device to use for the thin pool.
dm_use_deferred_removal
Enables the use of deferred device removal if libdm and the kernel driver support the mechanism.
dm_use_deferred_deletion
Enables the use of deferred device deletion if libdm and the kernel driver support the mechanism.
dm_blkdiscard
Enables the use of blkdiscard when removing devicemapper devices.
Valid values are true
, false
.
Defaults to false
.
dm_override_udev_sync_check
Specifies whether to disable the devicemapper backend synchronizing with the udev device manager for the Linux kernel.
Valid values are true
, false
.
Defaults to true
.
manage_package
Specifies whether to install or define the docker package. This is useful if you want to use your own package.
Valid values are true
, false
.
Defaults to true
.
package_name
Specifies the custom package name.
Default is set on a per system basis in docker::params
.
service_name
Specifies the custom service name.
Default is set on a per system basis in docker::params
.
docker_command
Specifies a custom docker command name.
Default is set on a per system basis in docker::params
.
daemon_subcommand
Specifies a subcommand for running docker as daemon.
Default is set on a per system basis in docker::params
.
docker_users
Specifies an array of users to add to the docker group.
Default is empty
.
docker_group
Specifies a string for the docker group.
Default is OS and package specific
.
daemon_environment_files
Specifies additional environment files to add to the service-overrides.conf
file.
repo_opt
Specifies a string to pass as repository options. This is for RedHat.
storage_devs
A quoted, space-separated list of devices to be used.
storage_vg
The volume group to use for docker storage.
storage_root_size
The maximum size of the root filesystem.
storage_data_size
The desired size for the docker data LV.
storage_min_data_size
Specifies the minimum size of data volume, otherwise the pool creation fails.
storage_chunk_size
Controls the chunk size/block size of the thin pool.
storage_growpart
Enables resizing the partition table backing root volume group.
storage_auto_extend_pool
Enables automatic pool extension using lvm.
storage_pool_autoextend_threshold
Auto pool extension threshold (in % of pool size).
storage_pool_autoextend_percent
Extends the pool by the specified percentage when the threshold is passed.
Limitations
This module supports:
- Debian 8.0
- Debian 9.0
- Ubuntu 14.04
- Ubuntu 16.04
- Centos 7.0
Development
If you would like to contribute to this module, see the guidelines in CONTRIBUTING.MD.
Types in this module release
Version 1.0.1
Updated metadata and CHANGELOG
Version 1.0.0
Forked for garethr/docker v5.3.0 Added support for:
- Docker services within a swarm cluster
- Swarm mode
- Docker secrets
Dependencies
- puppetlabs/stdlib (>= 4.1.0)
- puppetlabs/apt (>= 2.1.0)
- stahnma/epel (>= 0.0.6)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2013 Gareth Rushgrove Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.