diff --git a/REFERENCE.md b/REFERENCE.md
index 4a28f68..55c0fe0 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -1,4640 +1,4649 @@
# Reference
## Table of Contents
### Classes
* [`docker`](#docker): Module to install an up-to-date version of Docker from package.
* [`docker::compose`](#dockercompose): install Docker Compose using the recommended curl command.
* [`docker::config`](#dockerconfig)
* [`docker::images`](#dockerimages)
* [`docker::install`](#dockerinstall): Module to install an up-to-date version of Docker from a package repository.
Only for Debian, Red Hat and Windows
* [`docker::machine`](#dockermachine): install Docker Machine using the recommended curl command.
* [`docker::networks`](#dockernetworks)
* [`docker::params`](#dockerparams): Default parameter values for the docker module
* [`docker::plugins`](#dockerplugins)
* [`docker::registry_auth`](#dockerregistry_auth)
* [`docker::repos`](#dockerrepos)
* [`docker::run_instance`](#dockerrun_instance)
* [`docker::service`](#dockerservice): manage the docker service daemon
* [`docker::swarms`](#dockerswarms)
* [`docker::systemd_reload`](#dockersystemd_reload): For systems that have systemd
* [`docker::volumes`](#dockervolumes)
### Defined types
* [`docker::exec`](#dockerexec): A define which executes a command inside a container.
* [`docker::image`](#dockerimage): Module to install an up-to-date version of a Docker image
from the registry
* [`docker::plugin`](#dockerplugin): A define that manages a docker plugin
* [`docker::registry`](#dockerregistry): Module to configure private docker registries from which to pull Docker images
* [`docker::run`](#dockerrun): A define which manages a running docker container.
* [`docker::secrets`](#dockersecrets)
* [`docker::services`](#dockerservices): define that managers a Docker services
* [`docker::stack`](#dockerstack): deploys Docker stacks or compose v3
* [`docker::swarm`](#dockerswarm): managers a Docker Swarm Mode cluster
* [`docker::system_user`](#dockersystem_user): manage docker group users
* [`docker::windows_account`](#dockerwindows_account): Windows account that owns the docker services
### Resource types
* [`docker_compose`](#docker_compose): A type representing a Docker Compose file
* [`docker_network`](#docker_network): Type representing a Docker network
* [`docker_stack`](#docker_stack): A type representing a Docker Stack
* [`docker_volume`](#docker_volume): A type representing a Docker volume
### Functions
* [`docker::sanitised_name`](#dockersanitised_name): == Function: docker::sanitised_name Function to sanitise container name. === Parameters [*name*] Name to sanitise
* [`docker_exec_flags`](#docker_exec_flags): Transforms a hash into a string of docker exec flags
* [`docker_params_changed`](#docker_params_changed)
* [`docker_plugin_enable_flags`](#docker_plugin_enable_flags): Transforms a hash into a string of docker plugin remove flags
* [`docker_plugin_install_flags`](#docker_plugin_install_flags): Transforms a hash into a string of docker plugin install flags
* [`docker_plugin_remove_flags`](#docker_plugin_remove_flags): Transforms a hash into a string of docker plugin remove flags
* [`docker_run_flags`](#docker_run_flags): Transforms a hash into a string of docker flags
* [`docker_secrets_flags`](#docker_secrets_flags): Transforms a hash into a string of docker swarm init flags
* [`docker_service_flags`](#docker_service_flags): Transforms a hash into a string of docker swarm init flags
* [`docker_stack_flags`](#docker_stack_flags): Transforms a hash into a string of docker stack flags
* [`docker_swarm_init_flags`](#docker_swarm_init_flags): Transforms a hash into a string of docker swarm init flags
* [`docker_swarm_join_flags`](#docker_swarm_join_flags): Transforms a hash into a string of docker swarm init flags
### Tasks
* [`node_ls`](#node_ls): List nodes in the swarm
* [`node_rm`](#node_rm): Update a node
* [`node_update`](#node_update): Update a node
* [`service_create`](#service_create): Create a new Docker service
* [`service_rm`](#service_rm): Remove one replicated service
* [`service_scale`](#service_scale): Scale one replicated service
* [`service_update`](#service_update): Updates an existing service.
* [`swarm_init`](#swarm_init): Initializes a swarm
* [`swarm_join`](#swarm_join): Join a swarm
* [`swarm_leave`](#swarm_leave): Leave a swarm
* [`swarm_token`](#swarm_token): Gets the swarm token from the server
* [`swarm_update`](#swarm_update): Updates an existing service.
## Classes
### `docker`
Module to install an up-to-date version of Docker from package.
#### Parameters
The following parameters are available in the `docker` class:
* [`version`](#version)
* [`ensure`](#ensure)
* [`prerequired_packages`](#prerequired_packages)
* [`dependent_packages`](#dependent_packages)
* [`tcp_bind`](#tcp_bind)
* [`tls_enable`](#tls_enable)
* [`tls_verify`](#tls_verify)
* [`tls_cacert`](#tls_cacert)
* [`tls_cert`](#tls_cert)
* [`tls_key`](#tls_key)
* [`ip_forward`](#ip_forward)
* [`iptables`](#iptables)
* [`ip_masq`](#ip_masq)
* [`icc`](#icc)
* [`bip`](#bip)
* [`mtu`](#mtu)
* [`bridge`](#bridge)
* [`fixed_cidr`](#fixed_cidr)
* [`default_gateway`](#default_gateway)
* [`ipv6`](#ipv6)
* [`ipv6_cidr`](#ipv6_cidr)
* [`default_gateway_ipv6`](#default_gateway_ipv6)
* [`socket_bind`](#socket_bind)
* [`log_level`](#log_level)
* [`log_driver`](#log_driver)
* [`log_opt`](#log_opt)
* [`selinux_enabled`](#selinux_enabled)
* [`use_upstream_package_source`](#use_upstream_package_source)
* [`pin_upstream_package_source`](#pin_upstream_package_source)
* [`apt_source_pin_level`](#apt_source_pin_level)
* [`service_state`](#service_state)
* [`service_enable`](#service_enable)
* [`manage_service`](#manage_service)
* [`root_dir`](#root_dir)
* [`dns`](#dns)
* [`dns_search`](#dns_search)
* [`socket_group`](#socket_group)
* [`extra_parameters`](#extra_parameters)
* [`shell_values`](#shell_values)
* [`proxy`](#proxy)
* [`no_proxy`](#no_proxy)
* [`storage_driver`](#storage_driver)
* [`dm_basesize`](#dm_basesize)
* [`dm_fs`](#dm_fs)
* [`dm_mkfsarg`](#dm_mkfsarg)
* [`dm_mountopt`](#dm_mountopt)
* [`dm_blocksize`](#dm_blocksize)
* [`dm_loopdatasize`](#dm_loopdatasize)
* [`dm_loopmetadatasize`](#dm_loopmetadatasize)
* [`dm_datadev`](#dm_datadev)
* [`dm_metadatadev`](#dm_metadatadev)
* [`dm_thinpooldev`](#dm_thinpooldev)
* [`dm_use_deferred_removal`](#dm_use_deferred_removal)
* [`dm_use_deferred_deletion`](#dm_use_deferred_deletion)
* [`dm_blkdiscard`](#dm_blkdiscard)
* [`dm_override_udev_sync_check`](#dm_override_udev_sync_check)
* [`overlay2_override_kernel_check`](#overlay2_override_kernel_check)
* [`manage_package`](#manage_package)
* [`service_name`](#service_name)
* [`docker_users`](#docker_users)
* [`docker_group`](#docker_group)
* [`daemon_environment_files`](#daemon_environment_files)
* [`repo_opt`](#repo_opt)
* [`storage_devs`](#storage_devs)
* [`storage_vg`](#storage_vg)
* [`storage_root_size`](#storage_root_size)
* [`storage_data_size`](#storage_data_size)
* [`storage_min_data_size`](#storage_min_data_size)
* [`storage_chunk_size`](#storage_chunk_size)
* [`storage_growpart`](#storage_growpart)
* [`storage_auto_extend_pool`](#storage_auto_extend_pool)
* [`storage_pool_autoextend_threshold`](#storage_pool_autoextend_threshold)
* [`storage_pool_autoextend_percent`](#storage_pool_autoextend_percent)
* [`tmp_dir_config`](#tmp_dir_config)
* [`tmp_dir`](#tmp_dir)
* [`registry_mirror`](#registry_mirror)
* [`nuget_package_provider_version`](#nuget_package_provider_version)
* [`docker_msft_provider_version`](#docker_msft_provider_version)
* [`docker_ce_start_command`](#docker_ce_start_command)
* [`docker_ce_package_name`](#docker_ce_package_name)
+* [`docker_ce_cli_package_name`](#docker_ce_cli_package_name)
* [`docker_ce_source_location`](#docker_ce_source_location)
* [`docker_ce_key_source`](#docker_ce_key_source)
* [`docker_ce_key_id`](#docker_ce_key_id)
* [`docker_ce_release`](#docker_ce_release)
* [`docker_package_location`](#docker_package_location)
* [`docker_package_key_source`](#docker_package_key_source)
* [`docker_package_key_check_source`](#docker_package_key_check_source)
* [`docker_package_key_id`](#docker_package_key_id)
* [`docker_package_release`](#docker_package_release)
* [`docker_engine_start_command`](#docker_engine_start_command)
* [`docker_engine_package_name`](#docker_engine_package_name)
* [`docker_ce_channel`](#docker_ce_channel)
* [`docker_ee`](#docker_ee)
* [`docker_ee_package_name`](#docker_ee_package_name)
* [`docker_ee_source_location`](#docker_ee_source_location)
* [`docker_ee_key_source`](#docker_ee_key_source)
* [`docker_ee_key_id`](#docker_ee_key_id)
* [`docker_ee_repos`](#docker_ee_repos)
* [`docker_ee_release`](#docker_ee_release)
* [`package_release`](#package_release)
* [`labels`](#labels)
* [`execdriver`](#execdriver)
* [`package_source`](#package_source)
* [`os_lc`](#os_lc)
* [`storage_config`](#storage_config)
* [`storage_config_template`](#storage_config_template)
* [`storage_setup_file`](#storage_setup_file)
* [`service_provider`](#service_provider)
* [`service_config`](#service_config)
* [`service_config_template`](#service_config_template)
* [`service_overrides_template`](#service_overrides_template)
* [`socket_overrides_template`](#socket_overrides_template)
* [`socket_override`](#socket_override)
* [`service_after_override`](#service_after_override)
* [`service_hasstatus`](#service_hasstatus)
* [`service_hasrestart`](#service_hasrestart)
* [`acknowledge_unsupported_os`](#acknowledge_unsupported_os)
* [`have_systemd_v230`](#have_systemd_v230)
##### `version`
Data type: `Optional[String]`
The package version to install, used to set the package name.
Default value: `$docker::params::version`
##### `ensure`
Data type: `String`
Passed to the docker package.
Default value: `$docker::params::ensure`
##### `prerequired_packages`
Data type: `Variant[Array[String], Hash]`
An array of additional packages that need to be installed to support docker.
Default value: `$docker::params::prerequired_packages`
##### `dependent_packages`
Data type: `Array`
An array of packages installed by the docker-ce package v 18.09 and later.
Used when uninstalling to ensure containers cannot be run on the system.
Default value: `$docker::params::dependent_packages`
##### `tcp_bind`
Data type: `Optional[Variant[String,Array[String]]]`
The tcp socket to bind to in the format
tcp://127.0.0.1:4243
Default value: `$docker::params::tcp_bind`
##### `tls_enable`
Data type: `Boolean`
Enable TLS.
Default value: `$docker::params::tls_enable`
##### `tls_verify`
Data type: `Boolean`
Use TLS and verify the remote
Default value: `$docker::params::tls_verify`
##### `tls_cacert`
Data type: `Optional[String]`
Path to TLS CA certificate
Default value: `$docker::params::tls_cacert`
##### `tls_cert`
Data type: `Optional[String]`
Path to TLS certificate file
Default value: `$docker::params::tls_cert`
##### `tls_key`
Data type: `Optional[String]`
Path to TLS key file
Default value: `$docker::params::tls_key`
##### `ip_forward`
Data type: `Boolean`
Enables IP forwarding on the Docker host.
Default value: `$docker::params::ip_forward`
##### `iptables`
Data type: `Boolean`
Enable Docker's addition of iptables rules.
Default value: `$docker::params::iptables`
##### `ip_masq`
Data type: `Boolean`
Enable IP masquerading for bridge's IP range.
Default value: `$docker::params::ip_masq`
##### `icc`
Data type: `Optional[Boolean]`
Enable or disable Docker's unrestricted inter-container and Docker daemon host communication.
(Requires iptables=true to disable)
Default value: `$docker::params::icc`
##### `bip`
Data type: `Optional[String]`
Specify docker's network bridge IP, in CIDR notation.
Default value: `$docker::params::bip`
##### `mtu`
Data type: `Optional[String]`
Docker network MTU.
Default value: `$docker::params::mtu`
##### `bridge`
Data type: `Optional[String]`
Attach containers to a pre-existing network bridge
use 'none' to disable container networking
Default value: `$docker::params::bridge`
##### `fixed_cidr`
Data type: `Optional[String]`
IPv4 subnet for fixed IPs
10.20.0.0/16
Default value: `$docker::params::fixed_cidr`
##### `default_gateway`
Data type: `Optional[String]`
IPv4 address of the container default gateway;
this address must be part of the bridge subnet
(which is defined by bridge)
Default value: `$docker::params::default_gateway`
##### `ipv6`
Data type: `Optional[Boolean]`
Enables ipv6 support for the docker daemon
Default value: `$docker::params::ipv6`
##### `ipv6_cidr`
Data type: `Optional[String]`
IPv6 subnet for fixed IPs
Default value: `$docker::params::ipv6_cidr`
##### `default_gateway_ipv6`
Data type: `Optional[String]`
IPv6 address of the container default gateway:
Default value: `$docker::params::default_gateway_ipv6`
##### `socket_bind`
Data type: `String`
The unix socket to bind to.
Default value: `$docker::params::socket_bind`
##### `log_level`
Data type: `Optional[String]`
Set the logging level
Valid values: debug, info, warn, error, fatal
Default value: `$docker::params::log_level`
##### `log_driver`
Data type: `Optional[String]`
Set the log driver.
Docker default is json-file.
Valid values: none, json-file, syslog, journald, gelf, fluentd
Valid values description:
none : Disables any logging for the container.
docker logs won't be available with this driver.
json-file: Default logging driver for Docker.
Writes JSON messages to file.
syslog : Syslog logging driver for Docker.
Writes log messages to syslog.
journald : Journald logging driver for Docker.
Writes log messages to journald.
gelf : Graylog Extended Log Format (GELF) logging driver for Docker.
Writes log messages to a GELF endpoint: Graylog or Logstash.
fluentd : Fluentd logging driver for Docker.
Writes log messages to fluentd (forward input).
splunk : Splunk logging driver for Docker.
Writes log messages to Splunk (HTTP Event Collector).
awslogs : AWS Cloudwatch Logs logging driver for Docker.
Write log messages to Cloudwatch API
Default value: `$docker::params::log_driver`
##### `log_opt`
Data type: `Array`
Set the log driver specific options
Valid values per log driver:
none : undef
json-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 : undef
gelf :
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 name
splunk :
splunk-token=
splunk-url=https://your_splunk_instance:8088
awslogs :
awslogs-group=
awslogs-stream=
awslogs-create-group=true|false
awslogs-datetime-format= - strftime expression
awslogs-multiline-pattern=multiline start pattern using a regular expression
tag={{.ID}} - short container id (12 characters)|
{{.FullID}} - full container id
{{.Name}} - container name
Default value: `$docker::params::log_opt`
##### `selinux_enabled`
Data type: `Optional[Boolean]`
Enable selinux support. Default is false. SELinux does not presently
support the BTRFS storage driver.
Default value: `$docker::params::selinux_enabled`
##### `use_upstream_package_source`
Data type: `Optional[Boolean]`
Whether or not to use the upstream package source.
If you run your own package mirror, you may set this
to false.
Default value: `$docker::params::use_upstream_package_source`
##### `pin_upstream_package_source`
Data type: `Optional[Boolean]`
Pin upstream package source; this option currently only has any effect on
apt-based distributions. Set to false to remove pinning on the upstream
package repository. See also "apt_source_pin_level".
Default value: `$docker::params::pin_upstream_package_source`
##### `apt_source_pin_level`
Data type: `Optional[Integer]`
What level to pin our source package repository to; this only is relevent
if you're on an apt-based system (Debian, Ubuntu, etc) and
$use_upstream_package_source is set to true. Set this to false to disable
pinning, and undef to ensure the apt preferences file apt::source uses to
define pins is removed.
Default value: `$docker::params::apt_source_pin_level`
##### `service_state`
Data type: `String`
Whether you want to docker daemon to start up
Default value: `$docker::params::service_state`
##### `service_enable`
Data type: `Boolean`
Whether you want to docker daemon to start up at boot
Default value: `$docker::params::service_enable`
##### `manage_service`
Data type: `Boolean`
Specify whether the service should be managed.
Default value: `$docker::params::manage_service`
##### `root_dir`
Data type: `Optional[String]`
Custom root directory for containers
Default value: `$docker::params::root_dir`
##### `dns`
Data type: `Optional[Variant[String,Array]]`
Custom dns server address
Default value: `$docker::params::dns`
##### `dns_search`
Data type: `Optional[Variant[String,Array]]`
Custom dns search domains
Default value: `$docker::params::dns_search`
##### `socket_group`
Data type: `Optional[Variant[String,Boolean]]`
Group ownership of the unix control socket.
Default value: `$docker::params::socket_group`
##### `extra_parameters`
Data type: `Optional[Variant[String,Array]]`
Any extra parameters that should be passed to the docker daemon.
Default value: ``undef``
##### `shell_values`
Data type: `Optional[Variant[String,Array]]`
Array of shell values to pass into init script config files
Default value: ``undef``
##### `proxy`
Data type: `Optional[String]`
Will set the http_proxy and https_proxy env variables in /etc/sysconfig/docker (redhat/centos) or /etc/default/docker (debian)
Default value: `$docker::params::proxy`
##### `no_proxy`
Data type: `Optional[String]`
Will set the no_proxy variable in /etc/sysconfig/docker (redhat/centos) or /etc/default/docker (debian)
Default value: `$docker::params::no_proxy`
##### `storage_driver`
Data type: `Optional[String]`
Specify a storage driver to use
Valid values: aufs, devicemapper, btrfs, overlay, overlay2, vfs, zfs
Default value: `$docker::params::storage_driver`
##### `dm_basesize`
Data type: `Optional[String]`
The size to use when creating the base device, which limits the size of images and containers.
Default value: `$docker::params::dm_basesize`
##### `dm_fs`
Data type: `Optional[String]`
The filesystem to use for the base image (xfs or ext4)
Default value: `$docker::params::dm_fs`
##### `dm_mkfsarg`
Data type: `Optional[String]`
Specifies extra mkfs arguments to be used when creating the base device.
Default value: `$docker::params::dm_mkfsarg`
##### `dm_mountopt`
Data type: `Optional[String]`
Specifies extra mount options used when mounting the thin devices.
Default value: `$docker::params::dm_mountopt`
##### `dm_blocksize`
Data type: `Optional[String]`
A custom blocksize to use for the thin pool.
Default blocksize is 64K.
Warning: _DO NOT_ change this parameter after the lvm devices have been initialized.
Default value: `$docker::params::dm_blocksize`
##### `dm_loopdatasize`
Data type: `Optional[String]`
Specifies the size to use when creating the loopback file for the "data" device which is used for the thin pool
Default value: `$docker::params::dm_loopdatasize`
##### `dm_loopmetadatasize`
Data type: `Optional[String]`
Specifies the size to use when creating the loopback file for the "metadata" device which is used for the thin pool
Default value: `$docker::params::dm_loopmetadatasize`
##### `dm_datadev`
Data type: `Optional[String]`
(deprecated - dm_thinpooldev should be used going forward)
A custom blockdevice to use for data for the thin pool.
Default value: `$docker::params::dm_datadev`
##### `dm_metadatadev`
Data type: `Optional[String]`
(deprecated - dm_thinpooldev should be used going forward)
A custom blockdevice to use for metadata for the thin pool.
Default value: `$docker::params::dm_metadatadev`
##### `dm_thinpooldev`
Data type: `Optional[String]`
Specifies a custom block storage device to use for the thin pool.
Default value: `$docker::params::dm_thinpooldev`
##### `dm_use_deferred_removal`
Data type: `Optional[Boolean]`
Enables use of deferred device removal if libdm and the kernel driver support the mechanism.
Default value: `$docker::params::dm_use_deferred_removal`
##### `dm_use_deferred_deletion`
Data type: `Optional[Boolean]`
Enables use of deferred device deletion if libdm and the kernel driver support the mechanism.
Default value: `$docker::params::dm_use_deferred_deletion`
##### `dm_blkdiscard`
Data type: `Optional[Boolean]`
Enables or disables the use of blkdiscard when removing devicemapper devices.
Default value: `$docker::params::dm_blkdiscard`
##### `dm_override_udev_sync_check`
Data type: `Optional[Boolean]`
By default, the devicemapper backend attempts to synchronize with the udev
device manager for the Linux kernel. This option allows disabling that
synchronization, to continue even though the configuration may be buggy.
Default value: `$docker::params::dm_override_udev_sync_check`
##### `overlay2_override_kernel_check`
Data type: `Boolean`
Overrides the Linux kernel version check allowing using overlay2 with kernel < 4.0.
Default value: `$docker::params::overlay2_override_kernel_check`
##### `manage_package`
Data type: `Boolean`
Won't install or define the docker package, useful if you want to use your own package
Default value: `$docker::params::manage_package`
##### `service_name`
Data type: `Optional[String]`
Specify custom service name
Default value: `$docker::params::service_name`
##### `docker_users`
Data type: `Array`
Specify an array of users to add to the docker group
Default value: `[]`
##### `docker_group`
Data type: `String`
Specify a string for the docker group
Default value: `$docker::params::docker_group`
##### `daemon_environment_files`
Data type: `Array`
Specify additional environment files to add to the
service-overrides.conf
Default value: `[]`
##### `repo_opt`
Data type: `Optional[Variant[String,Hash]]`
Specify a string to pass as repository options (RedHat only)
Default value: `$docker::params::repo_opt`
##### `storage_devs`
Data type: `Optional[String]`
A quoted, space-separated list of devices to be used.
Default value: `$docker::params::storage_devs`
##### `storage_vg`
Data type: `Optional[String]`
The volume group to use for docker storage.
Default value: `$docker::params::storage_vg`
##### `storage_root_size`
Data type: `Optional[String]`
The size to which the root filesystem should be grown.
Default value: `$docker::params::storage_root_size`
##### `storage_data_size`
Data type: `Optional[String]`
The desired size for the docker data LV
Default value: `$docker::params::storage_data_size`
##### `storage_min_data_size`
Data type: `Optional[String]`
The minimum size of data volume otherwise pool creation fails
Default value: `$docker::params::storage_min_data_size`
##### `storage_chunk_size`
Data type: `Optional[String]`
Controls the chunk size/block size of thin pool.
Default value: `$docker::params::storage_chunk_size`
##### `storage_growpart`
Data type: `Optional[Boolean]`
Enable resizing partition table backing root volume group.
Default value: `$docker::params::storage_growpart`
##### `storage_auto_extend_pool`
Data type: `Optional[String]`
Enable/disable automatic pool extension using lvm
Default value: `$docker::params::storage_auto_extend_pool`
##### `storage_pool_autoextend_threshold`
Data type: `Optional[String]`
Auto pool extension threshold (in % of pool size)
Default value: `$docker::params::storage_pool_autoextend_threshold`
##### `storage_pool_autoextend_percent`
Data type: `Optional[String]`
Extend the pool by specified percentage when threshold is hit.
Default value: `$docker::params::storage_pool_autoextend_percent`
##### `tmp_dir_config`
Data type: `Optional[Boolean]`
Whether to set the TMPDIR value in the systemd config file
Default: true (set the value); false will comment out the line.
Note: false is backwards compatible prior to PR #58
Default value: `$docker::params::tmp_dir_config`
##### `tmp_dir`
Data type: `Optional[String]`
Sets the tmp dir for Docker (path)
Default value: `$docker::params::tmp_dir`
##### `registry_mirror`
Data type: `Optional[Variant[String,Array]]`
Sets the prefered container registry mirror.
Default value: `$docker::params::registry_mirror`
##### `nuget_package_provider_version`
Data type: `Optional[String]`
The version of the NuGet Package provider
Default value: `$docker::params::nuget_package_provider_version`
##### `docker_msft_provider_version`
Data type: `Optional[String]`
The version of the Microsoft Docker Provider Module
Default value: `$docker::params::docker_msft_provider_version`
##### `docker_ce_start_command`
Data type: `String`
Default value: `$docker::params::docker_ce_start_command`
##### `docker_ce_package_name`
Data type: `Optional[String]`
Default value: `$docker::params::docker_ce_package_name`
+##### `docker_ce_cli_package_name`
+
+Data type: `String[1]`
+
+
+
+Default value: `$docker::params::docker_ce_cli_package_name`
+
##### `docker_ce_source_location`
Data type: `Optional[String]`
Default value: `$docker::params::package_ce_source_location`
##### `docker_ce_key_source`
Data type: `Optional[String]`
Default value: `$docker::params::package_ce_key_source`
##### `docker_ce_key_id`
Data type: `Optional[String]`
Default value: `$docker::params::package_ce_key_id`
##### `docker_ce_release`
Data type: `Optional[String]`
Default value: `$docker::params::package_ce_release`
##### `docker_package_location`
Data type: `Optional[String]`
Default value: `$docker::params::package_source_location`
##### `docker_package_key_source`
Data type: `Optional[String]`
Default value: `$docker::params::package_key_source`
##### `docker_package_key_check_source`
Data type: `Optional[Boolean]`
Default value: `$docker::params::package_key_check_source`
##### `docker_package_key_id`
Data type: `Optional[String]`
Default value: `$docker::params::package_key_id`
##### `docker_package_release`
Data type: `Optional[String]`
Default value: `$docker::params::package_release`
##### `docker_engine_start_command`
Data type: `String`
Default value: `$docker::params::docker_engine_start_command`
##### `docker_engine_package_name`
Data type: `String`
Default value: `$docker::params::docker_engine_package_name`
##### `docker_ce_channel`
Data type: `String`
Default value: `$docker::params::docker_ce_channel`
##### `docker_ee`
Data type: `Optional[Boolean]`
Default value: `$docker::params::docker_ee`
##### `docker_ee_package_name`
Data type: `Optional[String]`
Default value: `$docker::params::package_ee_package_name`
##### `docker_ee_source_location`
Data type: `Optional[String]`
Default value: `$docker::params::package_ee_source_location`
##### `docker_ee_key_source`
Data type: `Optional[String]`
Default value: `$docker::params::package_ee_key_source`
##### `docker_ee_key_id`
Data type: `Optional[String]`
Default value: `$docker::params::package_ee_key_id`
##### `docker_ee_repos`
Data type: `Optional[String]`
Default value: `$docker::params::package_ee_repos`
##### `docker_ee_release`
Data type: `Optional[String]`
Default value: `$docker::params::package_ee_release`
##### `package_release`
Data type: `Optional[String]`
Default value: `$docker::params::package_release`
##### `labels`
Data type: `Array`
Default value: `$docker::params::labels`
##### `execdriver`
Data type: `Optional[String]`
Default value: `$docker::params::execdriver`
##### `package_source`
Data type: `Optional[String]`
Default value: `$docker::params::package_source`
##### `os_lc`
Data type: `Optional[String]`
Default value: `$docker::params::os_lc`
##### `storage_config`
Data type: `Optional[Variant[String,Boolean]]`
Default value: `$docker::params::storage_config`
##### `storage_config_template`
Data type: `Optional[String]`
Default value: `$docker::params::storage_config_template`
##### `storage_setup_file`
Data type: `Optional[String]`
Default value: `$docker::params::storage_setup_file`
##### `service_provider`
Data type: `Optional[String]`
Default value: `$docker::params::service_provider`
##### `service_config`
Data type: `Optional[Variant[String,Boolean]]`
Default value: `$docker::params::service_config`
##### `service_config_template`
Data type: `Optional[String]`
Default value: `$docker::params::service_config_template`
##### `service_overrides_template`
Data type: `Optional[Variant[String,Boolean]]`
Default value: `$docker::params::service_overrides_template`
##### `socket_overrides_template`
Data type: `Optional[Variant[String,Boolean]]`
Default value: `$docker::params::socket_overrides_template`
##### `socket_override`
Data type: `Optional[Boolean]`
Default value: `$docker::params::socket_override`
##### `service_after_override`
Data type: `Optional[Variant[String,Boolean]]`
Default value: `$docker::params::service_after_override`
##### `service_hasstatus`
Data type: `Optional[Boolean]`
Default value: `$docker::params::service_hasstatus`
##### `service_hasrestart`
Data type: `Optional[Boolean]`
Default value: `$docker::params::service_hasrestart`
##### `acknowledge_unsupported_os`
Data type: `Boolean`
Default value: ``false``
##### `have_systemd_v230`
Data type: `Boolean`
Default value: `$docker::params::have_systemd_v230`
### `docker::compose`
install Docker Compose using the recommended curl command.
#### Parameters
The following parameters are available in the `docker::compose` class:
* [`ensure`](#ensure)
* [`version`](#version)
* [`install_path`](#install_path)
* [`symlink_name`](#symlink_name)
* [`proxy`](#proxy)
* [`base_url`](#base_url)
* [`raw_url`](#raw_url)
* [`curl_ensure`](#curl_ensure)
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
Whether to install or remove Docker Compose
Valid values are absent present
Default value: `'present'`
##### `version`
Data type: `Optional[String]`
The version of Docker Compose to install.
Default value: `$docker::params::compose_version`
##### `install_path`
Data type: `Optional[String]`
The path where to install Docker Compose.
Default value: `$docker::params::compose_install_path`
##### `symlink_name`
Data type: `Optional[String]`
The name of the symlink created pointing to the actual docker-compose binary
This allows use of own docker-compose wrapper scripts for the times it's
necessary to set certain things before running the docker-compose binary
Default value: `$docker::params::compose_symlink_name`
##### `proxy`
Data type: `Optional[String]`
Proxy to use for downloading Docker Compose.
Default value: ``undef``
##### `base_url`
Data type: `Optional[String]`
The base url for installation
This allows use of a mirror that follows the same layout as the
official repository
Default value: `$docker::params::compose_base_url`
##### `raw_url`
Data type: `Optional[String]`
Override the raw URL for installation
The default is to build a URL from baseurl. If rawurl is set, the caller is
responsible for ensuring the URL points to the correct version and
architecture.
Default value: ``undef``
##### `curl_ensure`
Data type: `Optional[Boolean]`
Whether or not the curl package is ensured by this module.
Default value: `$docker::params::curl_ensure`
### `docker::config`
The docker::config class.
### `docker::images`
The docker::images class.
#### Parameters
The following parameters are available in the `docker::images` class:
* [`images`](#images)
##### `images`
Data type: `Any`
### `docker::install`
Module to install an up-to-date version of Docker from a package repository.
Only for Debian, Red Hat and Windows
#### Parameters
The following parameters are available in the `docker::install` class:
* [`version`](#version)
* [`nuget_package_provider_version`](#nuget_package_provider_version)
* [`docker_msft_provider_version`](#docker_msft_provider_version)
* [`docker_ee_package_name`](#docker_ee_package_name)
* [`docker_download_url`](#docker_download_url)
* [`dependent_packages`](#dependent_packages)
##### `version`
Data type: `Any`
The package version to install, used to set the package name.
Default value: `$docker::version`
##### `nuget_package_provider_version`
Data type: `Any`
The version of the NuGet Package provider
Default value: `$docker::nuget_package_provider_version`
##### `docker_msft_provider_version`
Data type: `Any`
The version of the Microsoft Docker Provider Module
Default value: `$docker::docker_msft_provider_version`
##### `docker_ee_package_name`
Data type: `Any`
The name of the Docker Enterprise Edition package
Default value: `$docker::docker_ee_package_name`
##### `docker_download_url`
Data type: `Any`
Default value: `$docker::package_location`
##### `dependent_packages`
Data type: `Any`
Default value: `$docker::dependent_packages`
### `docker::machine`
install Docker Machine using the recommended curl command.
#### Parameters
The following parameters are available in the `docker::machine` class:
* [`ensure`](#ensure)
* [`version`](#version)
* [`install_path`](#install_path)
* [`proxy`](#proxy)
* [`url`](#url)
* [`curl_ensure`](#curl_ensure)
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
Whether to install or remove Docker Machine
Valid values are absent present
Default value: `'present'`
##### `version`
Data type: `Optional[String]`
The version of Docker Machine to install.
Default value: `$docker::params::machine_version`
##### `install_path`
Data type: `Optional[String]`
The path where to install Docker Machine.
Default value: `$docker::params::machine_install_path`
##### `proxy`
Data type: `Optional[String]`
Proxy to use for downloading Docker Machine.
Default value: ``undef``
##### `url`
Data type: `Optional[Variant[Stdlib::HTTPUrl, Stdlib::HTTPSUrl]]`
The URL from which the docker machine binary should be fetched
Default value: ``undef``
##### `curl_ensure`
Data type: `Optional[Boolean]`
Whether or not the curl package is ensured by this module.
Default value: `$docker::params::curl_ensure`
### `docker::networks`
The docker::networks class.
#### Parameters
The following parameters are available in the `docker::networks` class:
* [`networks`](#networks)
##### `networks`
Data type: `Any`
### `docker::params`
Default parameter values for the docker module
### `docker::plugins`
The docker::plugins class.
#### Parameters
The following parameters are available in the `docker::plugins` class:
* [`plugins`](#plugins)
##### `plugins`
Data type: `Any`
### `docker::registry_auth`
The docker::registry_auth class.
#### Parameters
The following parameters are available in the `docker::registry_auth` class:
* [`registries`](#registries)
##### `registries`
Data type: `Any`
### `docker::repos`
The docker::repos class.
#### Parameters
The following parameters are available in the `docker::repos` class:
* [`location`](#location)
* [`key_source`](#key_source)
* [`key_check_source`](#key_check_source)
* [`architecture`](#architecture)
##### `location`
Data type: `Any`
Default value: `$docker::package_location`
##### `key_source`
Data type: `Any`
Default value: `$docker::package_key_source`
##### `key_check_source`
Data type: `Any`
Default value: `$docker::package_key_check_source`
##### `architecture`
Data type: `Any`
Default value: `$facts['os']['architecture']`
### `docker::run_instance`
The docker::run_instance class.
#### Parameters
The following parameters are available in the `docker::run_instance` class:
* [`instance`](#instance)
##### `instance`
Data type: `Any`
### `docker::service`
manage the docker service daemon
#### Parameters
The following parameters are available in the `docker::service` class:
* [`tcp_bind`](#tcp_bind)
* [`ip_forward`](#ip_forward)
* [`iptables`](#iptables)
* [`ip_masq`](#ip_masq)
* [`socket_bind`](#socket_bind)
* [`socket_group`](#socket_group)
* [`root_dir`](#root_dir)
* [`extra_parameters`](#extra_parameters)
* [`shell_values`](#shell_values)
* [`manage_service`](#manage_service)
* [`docker_command`](#docker_command)
* [`docker_start_command`](#docker_start_command)
* [`service_name`](#service_name)
* [`icc`](#icc)
* [`bridge`](#bridge)
* [`fixed_cidr`](#fixed_cidr)
* [`default_gateway`](#default_gateway)
* [`ipv6`](#ipv6)
* [`ipv6_cidr`](#ipv6_cidr)
* [`default_gateway_ipv6`](#default_gateway_ipv6)
* [`log_level`](#log_level)
* [`log_driver`](#log_driver)
* [`log_opt`](#log_opt)
* [`selinux_enabled`](#selinux_enabled)
* [`labels`](#labels)
* [`dns`](#dns)
* [`dns_search`](#dns_search)
* [`service_state`](#service_state)
* [`service_enable`](#service_enable)
* [`proxy`](#proxy)
* [`no_proxy`](#no_proxy)
* [`execdriver`](#execdriver)
* [`bip`](#bip)
* [`mtu`](#mtu)
* [`storage_driver`](#storage_driver)
* [`dm_basesize`](#dm_basesize)
* [`dm_fs`](#dm_fs)
* [`dm_mkfsarg`](#dm_mkfsarg)
* [`dm_mountopt`](#dm_mountopt)
* [`dm_blocksize`](#dm_blocksize)
* [`dm_loopdatasize`](#dm_loopdatasize)
* [`dm_loopmetadatasize`](#dm_loopmetadatasize)
* [`dm_datadev`](#dm_datadev)
* [`dm_metadatadev`](#dm_metadatadev)
* [`tmp_dir_config`](#tmp_dir_config)
* [`tmp_dir`](#tmp_dir)
* [`dm_thinpooldev`](#dm_thinpooldev)
* [`dm_use_deferred_removal`](#dm_use_deferred_removal)
* [`dm_use_deferred_deletion`](#dm_use_deferred_deletion)
* [`dm_blkdiscard`](#dm_blkdiscard)
* [`dm_override_udev_sync_check`](#dm_override_udev_sync_check)
* [`overlay2_override_kernel_check`](#overlay2_override_kernel_check)
* [`storage_devs`](#storage_devs)
* [`storage_vg`](#storage_vg)
* [`storage_root_size`](#storage_root_size)
* [`storage_data_size`](#storage_data_size)
* [`storage_min_data_size`](#storage_min_data_size)
* [`storage_chunk_size`](#storage_chunk_size)
* [`storage_growpart`](#storage_growpart)
* [`storage_auto_extend_pool`](#storage_auto_extend_pool)
* [`storage_pool_autoextend_threshold`](#storage_pool_autoextend_threshold)
* [`storage_pool_autoextend_percent`](#storage_pool_autoextend_percent)
* [`storage_config`](#storage_config)
* [`storage_config_template`](#storage_config_template)
* [`storage_setup_file`](#storage_setup_file)
* [`service_provider`](#service_provider)
* [`service_config`](#service_config)
* [`service_config_template`](#service_config_template)
* [`service_overrides_template`](#service_overrides_template)
* [`socket_overrides_template`](#socket_overrides_template)
* [`socket_override`](#socket_override)
* [`service_after_override`](#service_after_override)
* [`service_hasstatus`](#service_hasstatus)
* [`service_hasrestart`](#service_hasrestart)
* [`daemon_environment_files`](#daemon_environment_files)
* [`tls_enable`](#tls_enable)
* [`tls_verify`](#tls_verify)
* [`tls_cacert`](#tls_cacert)
* [`tls_cert`](#tls_cert)
* [`tls_key`](#tls_key)
* [`registry_mirror`](#registry_mirror)
* [`root_dir_flag`](#root_dir_flag)
##### `tcp_bind`
Data type: `Any`
Which tcp port, if any, to bind the docker service to.
Default value: `$docker::tcp_bind`
##### `ip_forward`
Data type: `Any`
This flag interacts with the IP forwarding setting on
your host system's kernel
Default value: `$docker::ip_forward`
##### `iptables`
Data type: `Any`
Enable Docker's addition of iptables rules
Default value: `$docker::iptables`
##### `ip_masq`
Data type: `Any`
Enable IP masquerading for bridge's IP range.
Default value: `$docker::ip_masq`
##### `socket_bind`
Data type: `Any`
Which local unix socket to bind the docker service to.
Default value: `$docker::socket_bind`
##### `socket_group`
Data type: `Any`
Which local unix socket to bind the docker service to.
Default value: `$docker::socket_group`
##### `root_dir`
Data type: `Any`
Specify a non-standard root directory for docker.
Default value: `$docker::root_dir`
##### `extra_parameters`
Data type: `Any`
Plain additional parameters to pass to the docker daemon
Default value: `$docker::extra_parameters`
##### `shell_values`
Data type: `Any`
Array of shell values to pass into init script config files
Default value: `$docker::shell_values`
##### `manage_service`
Data type: `Any`
Specify whether the service should be managed.
Valid values are 'true', 'false'.
Defaults to 'true'.
Default value: `$docker::manage_service`
##### `docker_command`
Data type: `Any`
Default value: `$docker::docker_command`
##### `docker_start_command`
Data type: `Any`
Default value: `$docker::docker_start_command`
##### `service_name`
Data type: `Any`
Default value: `$docker::service_name`
##### `icc`
Data type: `Any`
Default value: `$docker::icc`
##### `bridge`
Data type: `Any`
Default value: `$docker::bridge`
##### `fixed_cidr`
Data type: `Any`
Default value: `$docker::fixed_cidr`
##### `default_gateway`
Data type: `Any`
Default value: `$docker::default_gateway`
##### `ipv6`
Data type: `Any`
Default value: `$docker::ipv6`
##### `ipv6_cidr`
Data type: `Any`
Default value: `$docker::ipv6_cidr`
##### `default_gateway_ipv6`
Data type: `Any`
Default value: `$docker::default_gateway_ipv6`
##### `log_level`
Data type: `Any`
Default value: `$docker::log_level`
##### `log_driver`
Data type: `Any`
Default value: `$docker::log_driver`
##### `log_opt`
Data type: `Any`
Default value: `$docker::log_opt`
##### `selinux_enabled`
Data type: `Any`
Default value: `$docker::selinux_enabled`
##### `labels`
Data type: `Any`
Default value: `$docker::labels`
##### `dns`
Data type: `Any`
Default value: `$docker::dns`
##### `dns_search`
Data type: `Any`
Default value: `$docker::dns_search`
##### `service_state`
Data type: `Any`
Default value: `$docker::service_state`
##### `service_enable`
Data type: `Any`
Default value: `$docker::service_enable`
##### `proxy`
Data type: `Any`
Default value: `$docker::proxy`
##### `no_proxy`
Data type: `Any`
Default value: `$docker::no_proxy`
##### `execdriver`
Data type: `Any`
Default value: `$docker::execdriver`
##### `bip`
Data type: `Any`
Default value: `$docker::bip`
##### `mtu`
Data type: `Any`
Default value: `$docker::mtu`
##### `storage_driver`
Data type: `Any`
Default value: `$docker::storage_driver`
##### `dm_basesize`
Data type: `Any`
Default value: `$docker::dm_basesize`
##### `dm_fs`
Data type: `Any`
Default value: `$docker::dm_fs`
##### `dm_mkfsarg`
Data type: `Any`
Default value: `$docker::dm_mkfsarg`
##### `dm_mountopt`
Data type: `Any`
Default value: `$docker::dm_mountopt`
##### `dm_blocksize`
Data type: `Any`
Default value: `$docker::dm_blocksize`
##### `dm_loopdatasize`
Data type: `Any`
Default value: `$docker::dm_loopdatasize`
##### `dm_loopmetadatasize`
Data type: `Any`
Default value: `$docker::dm_loopmetadatasize`
##### `dm_datadev`
Data type: `Any`
Default value: `$docker::dm_datadev`
##### `dm_metadatadev`
Data type: `Any`
Default value: `$docker::dm_metadatadev`
##### `tmp_dir_config`
Data type: `Any`
Default value: `$docker::tmp_dir_config`
##### `tmp_dir`
Data type: `Any`
Default value: `$docker::tmp_dir`
##### `dm_thinpooldev`
Data type: `Any`
Default value: `$docker::dm_thinpooldev`
##### `dm_use_deferred_removal`
Data type: `Any`
Default value: `$docker::dm_use_deferred_removal`
##### `dm_use_deferred_deletion`
Data type: `Any`
Default value: `$docker::dm_use_deferred_deletion`
##### `dm_blkdiscard`
Data type: `Any`
Default value: `$docker::dm_blkdiscard`
##### `dm_override_udev_sync_check`
Data type: `Any`
Default value: `$docker::dm_override_udev_sync_check`
##### `overlay2_override_kernel_check`
Data type: `Any`
Default value: `$docker::overlay2_override_kernel_check`
##### `storage_devs`
Data type: `Any`
Default value: `$docker::storage_devs`
##### `storage_vg`
Data type: `Any`
Default value: `$docker::storage_vg`
##### `storage_root_size`
Data type: `Any`
Default value: `$docker::storage_root_size`
##### `storage_data_size`
Data type: `Any`
Default value: `$docker::storage_data_size`
##### `storage_min_data_size`
Data type: `Any`
Default value: `$docker::storage_min_data_size`
##### `storage_chunk_size`
Data type: `Any`
Default value: `$docker::storage_chunk_size`
##### `storage_growpart`
Data type: `Any`
Default value: `$docker::storage_growpart`
##### `storage_auto_extend_pool`
Data type: `Any`
Default value: `$docker::storage_auto_extend_pool`
##### `storage_pool_autoextend_threshold`
Data type: `Any`
Default value: `$docker::storage_pool_autoextend_threshold`
##### `storage_pool_autoextend_percent`
Data type: `Any`
Default value: `$docker::storage_pool_autoextend_percent`
##### `storage_config`
Data type: `Any`
Default value: `$docker::storage_config`
##### `storage_config_template`
Data type: `Any`
Default value: `$docker::storage_config_template`
##### `storage_setup_file`
Data type: `Any`
Default value: `$docker::storage_setup_file`
##### `service_provider`
Data type: `Any`
Default value: `$docker::service_provider`
##### `service_config`
Data type: `Any`
Default value: `$docker::service_config`
##### `service_config_template`
Data type: `Any`
Default value: `$docker::service_config_template`
##### `service_overrides_template`
Data type: `Any`
Default value: `$docker::service_overrides_template`
##### `socket_overrides_template`
Data type: `Any`
Default value: `$docker::socket_overrides_template`
##### `socket_override`
Data type: `Any`
Default value: `$docker::socket_override`
##### `service_after_override`
Data type: `Any`
Default value: `$docker::service_after_override`
##### `service_hasstatus`
Data type: `Any`
Default value: `$docker::service_hasstatus`
##### `service_hasrestart`
Data type: `Any`
Default value: `$docker::service_hasrestart`
##### `daemon_environment_files`
Data type: `Any`
Default value: `$docker::daemon_environment_files`
##### `tls_enable`
Data type: `Any`
Default value: `$docker::tls_enable`
##### `tls_verify`
Data type: `Any`
Default value: `$docker::tls_verify`
##### `tls_cacert`
Data type: `Any`
Default value: `$docker::tls_cacert`
##### `tls_cert`
Data type: `Any`
Default value: `$docker::tls_cert`
##### `tls_key`
Data type: `Any`
Default value: `$docker::tls_key`
##### `registry_mirror`
Data type: `Any`
Default value: `$docker::registry_mirror`
##### `root_dir_flag`
Data type: `Any`
Default value: `$docker::root_dir_flag`
### `docker::swarms`
The docker::swarms class.
#### Parameters
The following parameters are available in the `docker::swarms` class:
* [`swarms`](#swarms)
##### `swarms`
Data type: `Any`
### `docker::systemd_reload`
For systems that have systemd
### `docker::volumes`
The docker::volumes class.
#### Parameters
The following parameters are available in the `docker::volumes` class:
* [`volumes`](#volumes)
##### `volumes`
Data type: `Any`
## Defined types
### `docker::exec`
A define which executes a command inside a container.
#### Parameters
The following parameters are available in the `docker::exec` defined type:
* [`detach`](#detach)
* [`interactive`](#interactive)
* [`env`](#env)
* [`tty`](#tty)
* [`container`](#container)
* [`command`](#command)
* [`unless`](#unless)
* [`sanitise_name`](#sanitise_name)
* [`refreshonly`](#refreshonly)
* [`onlyif`](#onlyif)
##### `detach`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `interactive`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `env`
Data type: `Optional[Array]`
Default value: `[]`
##### `tty`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `container`
Data type: `Optional[String]`
Default value: ``undef``
##### `command`
Data type: `Optional[String]`
Default value: ``undef``
##### `unless`
Data type: `Optional[String]`
Default value: ``undef``
##### `sanitise_name`
Data type: `Optional[Boolean]`
Default value: ``true``
##### `refreshonly`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `onlyif`
Data type: `Optional[String]`
Default value: ``undef``
### `docker::image`
Module to install an up-to-date version of a Docker image
from the registry
#### Parameters
The following parameters are available in the `docker::image` defined type:
* [`ensure`](#ensure)
* [`image`](#image)
* [`image_tag`](#image_tag)
* [`image_digest`](#image_digest)
* [`docker_file`](#docker_file)
* [`docker_tar`](#docker_tar)
* [`force`](#force)
* [`docker_dir`](#docker_dir)
##### `ensure`
Data type: `Optional[Enum[present,absent,latest]]`
Whether you want the image present or absent.
Default value: `'present'`
##### `image`
Data type: `Optional[Pattern[/^[\S]*$/]]`
If you want the name of the image to be different from the
name of the puppet resource you can pass a value here.
Default value: `$title`
##### `image_tag`
Data type: `Optional[String]`
If you want a specific tag of the image to be installed
Default value: ``undef``
##### `image_digest`
Data type: `Optional[String]`
If you want a specific content digest of the image to be installed
Default value: ``undef``
##### `docker_file`
Data type: `Optional[String]`
If you want to add a docker image from specific docker file
Default value: ``undef``
##### `docker_tar`
Data type: `Optional[String]`
If you want to load a docker image from specific docker tar
Default value: ``undef``
##### `force`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `docker_dir`
Data type: `Optional[String]`
Default value: ``undef``
### `docker::plugin`
A define that manages a docker plugin
#### Parameters
The following parameters are available in the `docker::plugin` defined type:
* [`plugin_name`](#plugin_name)
* [`plugin_name`](#plugin_name)
* [`enabled`](#enabled)
* [`timeout`](#timeout)
* [`plugin_alias`](#plugin_alias)
* [`disable_on_install`](#disable_on_install)
* [`disable_content_trust`](#disable_content_trust)
* [`grant_all_permissions`](#grant_all_permissions)
* [`force_remove`](#force_remove)
* [`settings`](#settings)
* [`ensure`](#ensure)
* [`grant_all_permissions`](#grant_all_permissions)
##### `plugin_name`
Data type: `String`
This ensures whether the plugin is installed or not.
Note that the default behaviour of docker plugin
requires a plugin be disabled before it can be removed
Default value: `$title`
##### `plugin_name`
The name of the docker plugin
Default value: `$title`
##### `enabled`
Data type: `Optional[Boolean]`
A setting to enable or disable an installed plugin.
Default value: ``true``
##### `timeout`
Data type: `Optional[String]`
The number of seconds to wait when enabling a plugin
Default value: ``undef``
##### `plugin_alias`
Data type: `Optional[String]`
An alternative name to use for an installed plugin
Default value: ``undef``
##### `disable_on_install`
Data type: `Optional[Boolean]`
Alters the default behaviour of enabling a plugin upon install
Default value: ``false``
##### `disable_content_trust`
Data type: `Optional[Boolean]`
Skip image verification
Default value: ``true``
##### `grant_all_permissions`
Data type: `Optional[Boolean]`
Grant all permissions necessary to run the plugin
Default value: ``true``
##### `force_remove`
Data type: `Optional[Boolean]`
Force the removal of an active plugin
Default value: ``true``
##### `settings`
Data type: `Optional[Array]`
Any additional settings to pass to the plugin during install
Default value: `[]`
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
Default value: `'present'`
##### `grant_all_permissions`
Default value: ``true``
### `docker::registry`
Module to configure private docker registries from which to pull Docker images
#### Parameters
The following parameters are available in the `docker::registry` defined type:
* [`server`](#server)
* [`ensure`](#ensure)
* [`username`](#username)
* [`password`](#password)
* [`pass_hash`](#pass_hash)
* [`email`](#email)
* [`local_user`](#local_user)
* [`local_user_home`](#local_user_home)
* [`receipt`](#receipt)
* [`version`](#version)
##### `server`
Data type: `Optional[String]`
The hostname and port of the private Docker registry. Ex: dockerreg:5000
Default value: `$title`
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
Whether or not you want to login or logout of a repository
Default value: `'present'`
##### `username`
Data type: `Optional[String]`
Username for authentication to private Docker registry.
auth is not required.
Default value: ``undef``
##### `password`
Data type: `Optional[String]`
Password for authentication to private Docker registry. Leave undef if
auth is not required.
Default value: ``undef``
##### `pass_hash`
Data type: `Optional[String]`
The hash to be used for receipt. If left as undef, a hash will be generated
Default value: ``undef``
##### `email`
Data type: `Optional[String]`
Email for registration to private Docker registry. Leave undef if
auth is not required.
Default value: ``undef``
##### `local_user`
Data type: `Optional[String]`
The local user to log in as. Docker will store credentials in this
users home directory
Default value: `'root'`
##### `local_user_home`
Data type: `Optional[String]`
The local user home directory.
Default value: ``undef``
##### `receipt`
Data type: `Optional[Boolean]`
Required to be true for idempotency
Default value: ``true``
##### `version`
Data type: `Optional[String]`
Default value: `$docker::version`
### `docker::run`
Sets a restart policy on the docker run.
Note: If set, puppet will NOT setup an init script to manage, instead
it will do a raw docker run command using a CID file to track the container
ID.
If you want a normal named container with an init script and a restart policy
you must use the extra_parameters feature and pass it in like this:
extra_parameters => ['--restart=always']
However, if your system is using sytemd this restart policy will be
ineffective because the ExecStop commands will run which will cause
docker to stop restarting it. In this case you should use the
systemd_restart option to specify the policy you want.
This will allow the docker container to be restarted if it dies, without
puppet help.
(optional) Specifies the command to execute to check that the container is healthy using the docker health check functionality.
Default: undef
(optional) Specifies the interval that the health check command will execute in seconds.
Default: undef
(optional) Checks the health status of Docker container and if it is unhealthy the service will be restarted.
The health_check_cmd parameter must be set to true to use this functionality.
Default: undef
The docker network to attach to a container.
Can be a String or Array (if using multiple networks)
Default: bridge
An array of additional command line arguments to pass to the `docker run`
command. Useful for adding additional new or experimental options that the
module does not yet support.
(optional) If the container is to be managed by a systemd unit file set the
Restart option on the unit file. Can be any valid value for this systemd
configuration. Most commonly used are on-failure or always.
Default: on-failure
(optional) Specify an additional unless for the Docker run command when using restart.
Default: undef
(optional) Specifies the command to execute after container is created but before it is started.
Default: undef
(optional) If the container is to be managed by a systemd unit file set the
RemainAfterExit option on the unit file. Can be any valid value for this systemd
configuration.
Default: Not included in unit file
(optional) Prepare the service and enable it as usual but do not run it right away.
Useful when building VM images using masterless Puppet and then letting the Docker images
to be downloaded when a new VM is created.
Default: false
#### Parameters
The following parameters are available in the `docker::run` defined type:
* [`restart`](#restart)
* [`verify_digest`](#verify_digest)
* [`service_prefix`](#service_prefix)
* [`restart_service`](#restart_service)
* [`restart_service_on_docker_refresh`](#restart_service_on_docker_refresh)
* [`manage_service`](#manage_service)
* [`docker_service`](#docker_service)
* [`health_check_cmd`](#health_check_cmd)
* [`health_check_interval`](#health_check_interval)
* [`restart_on_unhealthy`](#restart_on_unhealthy)
* [`net`](#net)
* [`extra_parameters`](#extra_parameters)
* [`systemd_restart`](#systemd_restart)
* [`custom_unless`](#custom_unless)
* [`after_create`](#after_create)
* [`remain_after_exit`](#remain_after_exit)
* [`prepare_service_only`](#prepare_service_only)
* [`image`](#image)
* [`ensure`](#ensure)
* [`command`](#command)
* [`memory_limit`](#memory_limit)
* [`cpuset`](#cpuset)
* [`ports`](#ports)
* [`labels`](#labels)
* [`expose`](#expose)
* [`volumes`](#volumes)
* [`links`](#links)
* [`use_name`](#use_name)
* [`running`](#running)
* [`volumes_from`](#volumes_from)
* [`username`](#username)
* [`hostname`](#hostname)
* [`env`](#env)
* [`env_file`](#env_file)
* [`dns`](#dns)
* [`dns_search`](#dns_search)
* [`lxc_conf`](#lxc_conf)
* [`service_provider`](#service_provider)
* [`disable_network`](#disable_network)
* [`privileged`](#privileged)
* [`detach`](#detach)
* [`extra_systemd_parameters`](#extra_systemd_parameters)
* [`pull_on_start`](#pull_on_start)
* [`after`](#after)
* [`after_service`](#after_service)
* [`depends`](#depends)
* [`depend_services`](#depend_services)
* [`tty`](#tty)
* [`socket_connect`](#socket_connect)
* [`hostentries`](#hostentries)
* [`before_start`](#before_start)
* [`before_stop`](#before_stop)
* [`after_start`](#after_start)
* [`after_stop`](#after_stop)
* [`remove_container_on_start`](#remove_container_on_start)
* [`remove_container_on_stop`](#remove_container_on_stop)
* [`remove_volume_on_start`](#remove_volume_on_start)
* [`remove_volume_on_stop`](#remove_volume_on_stop)
* [`stop_wait_time`](#stop_wait_time)
* [`syslog_identifier`](#syslog_identifier)
* [`read_only`](#read_only)
##### `restart`
Data type: `Optional[String]`
Default value: ``undef``
##### `verify_digest`
Data type: `Optional[String]`
(optional) Make sure, that the image has not modified. Compares the digest
checksum before starting the docker image.
To get the digest of an image, run the following command:
docker image inspect <> --format='{{index .RepoDigests 0}}
Default value: ``undef``
##### `service_prefix`
Data type: `Optional[String]`
(optional) The name to prefix the startup script with and the Puppet
service resource title with. Default: 'docker-'
Default value: `'docker-'`
##### `restart_service`
Data type: `Optional[Boolean]`
(optional) Whether or not to restart the service if the the generated init
script changes. Default: true
Default value: ``true``
##### `restart_service_on_docker_refresh`
Data type: `Optional[Boolean]`
Whether or not to restart the service if the docker service is restarted.
Only has effect if the docker_service parameter is set.
Default: true
Default value: ``true``
##### `manage_service`
Data type: `Optional[Boolean]`
(optional) Whether or not to create a puppet Service resource for the init
script. Disabling this may be useful if integrating with existing modules.
Default: true
Default value: ``true``
##### `docker_service`
Data type: `Variant[String,Boolean]`
(optional) If (and how) the Docker service itself is managed by Puppet
true -> Service['docker']
false -> no Service dependency
anything else -> Service[docker_service]
Default: false
Default value: ``false``
##### `health_check_cmd`
Data type: `Optional[String]`
Default value: ``undef``
##### `health_check_interval`
Data type: `Optional[Integer]`
Default value: ``undef``
##### `restart_on_unhealthy`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `net`
Data type: `Variant[String,Array,Undef]`
Default value: ``undef``
##### `extra_parameters`
Data type: `Optional[Variant[String,Array[String]]]`
Default value: ``undef``
##### `systemd_restart`
Data type: `Optional[String]`
Default value: `'on-failure'`
##### `custom_unless`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `after_create`
Data type: `Optional[String]`
Default value: ``undef``
##### `remain_after_exit`
Data type: `Optional[String]`
Default value: ``undef``
##### `prepare_service_only`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `image`
Data type: `Optional[Pattern[/^[\S]*$/]]`
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
Default value: `'present'`
##### `command`
Data type: `Optional[String]`
Default value: ``undef``
##### `memory_limit`
Data type: `Optional[Pattern[/^[\d]*(b|k|m|g)$/]]`
Default value: `'0b'`
##### `cpuset`
Data type: `Variant[String,Array,Undef]`
Default value: `[]`
##### `ports`
Data type: `Variant[String,Array,Undef]`
Default value: `[]`
##### `labels`
Data type: `Variant[String,Array,Undef]`
Default value: `[]`
##### `expose`
Data type: `Variant[String,Array,Undef]`
Default value: `[]`
##### `volumes`
Data type: `Variant[String,Array,Undef]`
Default value: `[]`
##### `links`
Data type: `Variant[String,Array,Undef]`
Default value: `[]`
##### `use_name`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `running`
Data type: `Optional[Boolean]`
Default value: ``true``
##### `volumes_from`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `username`
Data type: `Variant[String,Boolean]`
Default value: ``false``
##### `hostname`
Data type: `Variant[String,Boolean]`
Default value: ``false``
##### `env`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `env_file`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `dns`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `dns_search`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `lxc_conf`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `service_provider`
Data type: `Optional[String]`
Default value: ``undef``
##### `disable_network`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `privileged`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `detach`
Data type: `Optional[Boolean]`
Default value: ``undef``
##### `extra_systemd_parameters`
Data type: `Optional[Variant[String,Hash]]`
Default value: `{}`
##### `pull_on_start`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `after`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `after_service`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `depends`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `depend_services`
Data type: `Optional[Variant[String,Array]]`
Default value: `['docker.service']`
##### `tty`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `socket_connect`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `hostentries`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `before_start`
Data type: `Variant[String,Boolean]`
Default value: ``false``
##### `before_stop`
Data type: `Variant[String,Boolean]`
Default value: ``false``
##### `after_start`
Data type: `Variant[String,Boolean]`
Default value: ``false``
##### `after_stop`
Data type: `Variant[String,Boolean]`
Default value: ``false``
##### `remove_container_on_start`
Data type: `Optional[Boolean]`
Default value: ``true``
##### `remove_container_on_stop`
Data type: `Optional[Boolean]`
Default value: ``true``
##### `remove_volume_on_start`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `remove_volume_on_stop`
Data type: `Optional[Boolean]`
Default value: ``false``
##### `stop_wait_time`
Data type: `Optional[Integer]`
Default value: `0`
##### `syslog_identifier`
Data type: `Optional[String]`
Default value: ``undef``
##### `read_only`
Data type: `Optional[Boolean]`
Default value: ``false``
### `docker::secrets`
The docker::secrets class.
#### Parameters
The following parameters are available in the `docker::secrets` defined type:
* [`ensure`](#ensure)
* [`label`](#label)
* [`secret_name`](#secret_name)
* [`secret_path`](#secret_path)
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
Default value: `'present'`
##### `label`
Data type: `Optional[Variant[String,Array]]`
Default value: `[]`
##### `secret_name`
Data type: `Optional[String]`
Default value: ``undef``
##### `secret_path`
Data type: `Optional[String]`
Default value: ``undef``
### `docker::services`
define that managers a Docker services
#### Parameters
The following parameters are available in the `docker::services` defined type:
* [`ensure`](#ensure)
* [`image`](#image)
* [`detach`](#detach)
* [`env`](#env)
* [`label`](#label)
* [`publish`](#publish)
* [`replicas`](#replicas)
* [`tty`](#tty)
* [`user`](#user)
* [`workdir`](#workdir)
* [`extra_params`](#extra_params)
* [`update`](#update)
* [`scale`](#scale)
* [`host_socket`](#host_socket)
* [`registry_mirror`](#registry_mirror)
* [`mounts`](#mounts)
* [`networks`](#networks)
* [`command`](#command)
* [`create`](#create)
* [`service_name`](#service_name)
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
This ensures that the service is present or not.
Default value: `'present'`
##### `image`
Data type: `Optional[Variant[String,Array]]`
The Docker image to spwan the service from.
Default value: ``undef``
##### `detach`
Data type: `Optional[Boolean]`
Exit immediately instead of waiting for the service to converge (default true)
Default value: ``true``
##### `env`
Data type: `Optional[Array]`
Set environment variables
Default value: `[]`
##### `label`
Data type: `Optional[Array]`
Service labels.
This used as metdata to configure constraints etc.
Default value: `[]`
##### `publish`
Data type: `Optional[Variant[String,Array]]`
Publish port(s) as node ports.
Default value: ``undef``
##### `replicas`
Data type: `Optional[Variant[String,Array]]`
Number of tasks (containers per service)
Default value: ``undef``
##### `tty`
Data type: `Optional[Boolean]`
Allocate a pseudo-TTY
Default value: ``false``
##### `user`
Data type: `Optional[Variant[String,Array]]`
Username or UID (format: [:])
Default value: ``undef``
##### `workdir`
Data type: `Optional[Variant[String,Array]]`
Working directory inside the container
Default value: ``undef``
##### `extra_params`
Data type: `Optional[Array]`
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
Default value: `[]`
##### `update`
Data type: `Optional[Boolean]`
This changes the docker command to
docker service update, you must pass a service name with this option
Default value: ``false``
##### `scale`
Data type: `Optional[Boolean]`
This changes the docker command to
docker service scale, this can only be used with service name and
replicas
Default value: ``false``
##### `host_socket`
Data type: `Optional[Variant[String,Array]]`
This will allow the service to connect to the host linux socket.
Default value: ``undef``
##### `registry_mirror`
Data type: `Optional[Variant[String,Array]]`
This will allow the service to set a registry mirror.
Default value: ``undef``
##### `mounts`
Data type: `Optional[Variant[String,Array]]`
Allows attaching filesystem mounts to the service (specified as an array)
Default value: ``undef``
##### `networks`
Data type: `Optional[Array]`
Allows attaching the service to networks (specified as an array)
Default value: ``undef``
##### `command`
Data type: `Optional[Variant[String,Array]]`
Command to run on the container
Default value: ``undef``
##### `create`
Data type: `Optional[Boolean]`
Default value: ``true``
##### `service_name`
Data type: `Optional[Variant[String,Array]]`
Default value: ``undef``
### `docker::stack`
deploys Docker stacks or compose v3
#### Parameters
The following parameters are available in the `docker::stack` defined type:
* [`ensure`](#ensure)
* [`stack_name`](#stack_name)
* [`bundle_file`](#bundle_file)
* [`prune`](#prune)
* [`resolve_image`](#resolve_image)
* [`with_registry_auth`](#with_registry_auth)
* [`compose_files`](#compose_files)
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
This ensures that the stack is present or not.
Default value: `'present'`
##### `stack_name`
Data type: `Optional[String]`
The name of the stack that you are deploying
Default value: ``undef``
##### `bundle_file`
Data type: `Optional[String]`
Path to a Distributed Application Bundle file
Please note this is experimental
Default value: ``undef``
##### `prune`
Data type: `Optional[Boolean]`
Prune services that are no longer referenced
Default value: ``false``
##### `resolve_image`
Data type: `Optional[Enum['always','changed','never']]`
Query the registry to resolve image digest and supported platforms
Only accepts ("always"|"changed"|"never")
Default value: ``undef``
##### `with_registry_auth`
Data type: `Optional[Boolean]`
Send registry authentication details to Swarm agents
Default value: ``false``
##### `compose_files`
Data type: `Optional[Array]`
Default value: ``undef``
### `docker::swarm`
managers a Docker Swarm Mode cluster
#### Parameters
The following parameters are available in the `docker::swarm` defined type:
* [`ensure`](#ensure)
* [`init`](#init)
* [`join`](#join)
* [`advertise_addr`](#advertise_addr)
* [`autolock`](#autolock)
* [`cert_expiry`](#cert_expiry)
* [`default_addr_pool`](#default_addr_pool)
* [`default_addr_pool_mask_length`](#default_addr_pool_mask_length)
* [`dispatcher_heartbeat`](#dispatcher_heartbeat)
* [`external_ca`](#external_ca)
* [`force_new_cluster`](#force_new_cluster)
* [`listen_addr`](#listen_addr)
* [`max_snapshots`](#max_snapshots)
* [`snapshot_interval`](#snapshot_interval)
* [`token`](#token)
* [`manager_ip`](#manager_ip)
##### `ensure`
Data type: `Optional[Enum[present,absent]]`
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
Default value: `'present'`
##### `init`
Data type: `Optional[Boolean]`
This creates the first worker node for a new cluster.
Set init to true to create a new cluster
Default value: ``false``
##### `join`
Data type: `Optional[Boolean]`
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
Default value: ``false``
##### `advertise_addr`
Data type: `Optional[String]`
The address that your node will advertise to the cluster for raft.
On multihomed servers this flag must be passed
Default value: ``undef``
##### `autolock`
Data type: `Optional[Boolean]`
Enable manager autolocking (requiring an unlock key to start a stopped manager)
Default value: ``false``
##### `cert_expiry`
Data type: `Optional[String]`
Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)
Default value: ``undef``
##### `default_addr_pool`
Data type: `Optional[Array]`
Array of default subnet pools for global scope networks (['30.30.0.0/16','40.40.0.0/16'])
Default value: ``undef``
##### `default_addr_pool_mask_length`
Data type: `Optional[String]`
Default subnet pools mask length for default-addr-pools (CIDR block number)
Default value: ``undef``
##### `dispatcher_heartbeat`
Data type: `Optional[String]`
Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)
Default value: ``undef``
##### `external_ca`
Data type: `Optional[String]`
Specifications of one or more certificate signing endpoints
Default value: ``undef``
##### `force_new_cluster`
Data type: `Optional[Boolean]`
Force create a new cluster from current state
Default value: ``false``
##### `listen_addr`
Data type: `Optional[String]`
The address that your node will listen to the cluster for raft.
On multihomed servers this flag must be passed
Default value: ``undef``
##### `max_snapshots`
Data type: `Optional[String]`
Number of additional Raft snapshots to retain
Default value: ``undef``
##### `snapshot_interval`
Data type: `Optional[String]`
Number of log entries between Raft snapshots (default 10000)
Default value: ``undef``
##### `token`
Data type: `Optional[String]`
The authentication token to join the cluster. The token also defines the type of
node (worker or manager)
Default value: ``undef``
##### `manager_ip`
Data type: `Optional[String]`
The ip address of a manager node to join the cluster.
Default value: ``undef``
### `docker::system_user`
manage docker group users
#### Parameters
The following parameters are available in the `docker::system_user` defined type:
* [`create_user`](#create_user)
##### `create_user`
Data type: `Any`
Boolean to cotrol whether the user should be created
Default value: ``true``
### `docker::windows_account`
Windows account that owns the docker services
## Resource types
### `docker_compose`
A type representing a Docker Compose file
#### Properties
The following properties are available in the `docker_compose` type.
##### `ensure`
Valid values: `present`, `absent`
The basic property that the resource should be in.
Default value: `present`
#### Parameters
The following parameters are available in the `docker_compose` type.
* [`compose_files`](#compose_files)
* [`name`](#name)
* [`options`](#options)
* [`provider`](#provider)
* [`scale`](#scale)
* [`up_args`](#up_args)
##### `compose_files`
An array of Docker Compose Files paths.
##### `name`
namevar
The name of the project
##### `options`
Additional options to be passed directly to docker-compose.
##### `provider`
The specific backend to use for this `docker_compose` resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
##### `scale`
A hash of compose services and number of containers.
##### `up_args`
Arguments to be passed directly to docker-compose up.
### `docker_network`
Type representing a Docker network
#### Properties
The following properties are available in the `docker_network` type.
##### `driver`
The network driver used by the network
##### `ensure`
Valid values: `present`, `absent`
The basic property that the resource should be in.
Default value: `present`
##### `id`
The ID of the network provided by Docker
##### `ipam_driver`
The IPAM (IP Address Management) driver
#### Parameters
The following parameters are available in the `docker_network` type.
* [`additional_flags`](#additional_flags)
* [`aux_address`](#aux_address)
* [`gateway`](#gateway)
* [`ip_range`](#ip_range)
* [`name`](#name)
* [`options`](#options)
* [`provider`](#provider)
* [`subnet`](#subnet)
##### `additional_flags`
Additional flags for the 'docker network create'
##### `aux_address`
Auxiliary ipv4 or ipv6 addresses used by the Network driver
##### `gateway`
An ipv4 or ipv6 gateway for the server subnet
##### `ip_range`
The range of IP addresses used by the network
##### `name`
namevar
The name of the network
##### `options`
Additional options for the network driver
##### `provider`
The specific backend to use for this `docker_network` resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
##### `subnet`
The subnet in CIDR format that represents a network segment
### `docker_stack`
A type representing a Docker Stack
#### Properties
The following properties are available in the `docker_stack` type.
##### `ensure`
Valid values: `present`, `absent`
The basic property that the resource should be in.
Default value: `present`
#### Parameters
The following parameters are available in the `docker_stack` type.
* [`bundle_file`](#bundle_file)
* [`compose_files`](#compose_files)
* [`name`](#name)
* [`provider`](#provider)
* [`up_args`](#up_args)
##### `bundle_file`
Path to a Distributed Application Bundle file.
##### `compose_files`
An array of Docker Compose Files paths.
##### `name`
namevar
The name of the stack
##### `provider`
The specific backend to use for this `docker_stack` resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
##### `up_args`
Arguments to be passed directly to docker stack deploy.
### `docker_volume`
A type representing a Docker volume
#### Properties
The following properties are available in the `docker_volume` type.
##### `driver`
The volume driver used by the volume
##### `ensure`
Valid values: `present`, `absent`
The basic property that the resource should be in.
Default value: `present`
##### `mountpoint`
The location that the volume is mounted to
#### Parameters
The following parameters are available in the `docker_volume` type.
* [`name`](#name)
* [`options`](#options)
* [`provider`](#provider)
##### `name`
namevar
The name of the volume
##### `options`
Additional options for the volume driver
##### `provider`
The specific backend to use for this `docker_volume` resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
## Functions
### `docker::sanitised_name`
Type: Puppet Language
== Function: docker::sanitised_name
Function to sanitise container name.
=== Parameters
[*name*]
Name to sanitise
#### `docker::sanitised_name(Any $name)`
== Function: docker::sanitised_name
Function to sanitise container name.
=== Parameters
[*name*]
Name to sanitise
Returns: `Any`
##### `name`
Data type: `Any`
### `docker_exec_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker exec flags
#### `docker_exec_flags()`
Transforms a hash into a string of docker exec flags
Returns: `Any`
### `docker_params_changed`
Type: Ruby 4.x API
The docker_params_changed function.
#### `docker_params_changed(Hash $opts)`
The docker_params_changed function.
Returns: `String`
##### `opts`
Data type: `Hash`
### `docker_plugin_enable_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker plugin remove flags
#### `docker_plugin_enable_flags()`
Transforms a hash into a string of docker plugin remove flags
Returns: `Any`
### `docker_plugin_install_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker plugin install flags
#### `docker_plugin_install_flags()`
Transforms a hash into a string of docker plugin install flags
Returns: `Any`
### `docker_plugin_remove_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker plugin remove flags
#### `docker_plugin_remove_flags()`
Transforms a hash into a string of docker plugin remove flags
Returns: `Any`
### `docker_run_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker flags
#### `docker_run_flags()`
Transforms a hash into a string of docker flags
Returns: `Any`
### `docker_secrets_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker swarm init flags
#### `docker_secrets_flags()`
Transforms a hash into a string of docker swarm init flags
Returns: `Any`
### `docker_service_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker swarm init flags
#### `docker_service_flags()`
Transforms a hash into a string of docker swarm init flags
Returns: `Any`
### `docker_stack_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker stack flags
#### `docker_stack_flags()`
Transforms a hash into a string of docker stack flags
Returns: `Any`
### `docker_swarm_init_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker swarm init flags
#### `docker_swarm_init_flags()`
Transforms a hash into a string of docker swarm init flags
Returns: `Any`
### `docker_swarm_join_flags`
Type: Ruby 3.x API
Transforms a hash into a string of docker swarm init flags
#### `docker_swarm_join_flags()`
Transforms a hash into a string of docker swarm init flags
Returns: `Any`
## Tasks
### `node_ls`
List nodes in the swarm
**Supports noop?** false
#### Parameters
##### `filter`
Data type: `Optional[String[1]]`
Filter output based on conditions provided
##### `quiet`
Data type: `Optional[Boolean]`
Only display IDs
### `node_rm`
Update a node
**Supports noop?** false
#### Parameters
##### `force`
Data type: `Optional[Boolean]`
Force remove a node from the swarm
##### `node`
Data type: `String[1]`
Hostname or ID of the node in the swarm
### `node_update`
Update a node
**Supports noop?** false
#### Parameters
##### `availability`
Data type: `Optional[Enum['active', 'pause', 'drain']]`
Availability of the node
##### `role`
Data type: `Optional[Enum['manager', 'worker']]`
Role of the node
##### `label_add`
Data type: `Optional[Array]`
Add or update a node label (key=value)
##### `label_rm`
Data type: `Optional[Array]`
Remove a node label if exists.
##### `node`
Data type: `String[1]`
ID of the node in the swarm
### `service_create`
Create a new Docker service
**Supports noop?** false
#### Parameters
##### `service`
Data type: `String[1]`
The name of the service to create
##### `image`
Data type: `String[1]`
The new image to use for the service
##### `replicas`
Data type: `Integer`
Number of replicas
##### `expose`
Data type: `Variant[String,Array,Undef]`
Publish service ports externally to the swarm
##### `env`
Data type: `Optional[Hash]`
Set environment variables
##### `command`
Data type: `Variant[String,Array,Undef]`
Command to run on the container
##### `extra_params`
Data type: `Optional[Array]`
Allows you to pass any other flag that the Docker service create supports.
##### `detach`
Data type: `Optional[Boolean]`
Exit immediately instead of waiting for the service to converge
### `service_rm`
Remove one replicated service
**Supports noop?** false
#### Parameters
##### `service`
Data type: `String[1]`
Name or ID of the service
### `service_scale`
Scale one replicated service
**Supports noop?** false
#### Parameters
##### `service`
Data type: `String[1]`
Name or ID of the service
##### `scale`
Data type: `Integer`
Number of replicas
##### `detach`
Data type: `Optional[Boolean]`
Exit immediately instead of waiting for the service to converge
### `service_update`
Updates an existing service.
**Supports noop?** false
#### Parameters
##### `service`
Data type: `String[1]`
The service to update
##### `image`
Data type: `String[1]`
The new image to use for the service
##### `constraint_add`
Data type: `Optional[Array]`
Add or update a service constraint (selector==value, selector!=value)
##### `constraint_rm`
Data type: `Optional[Array]`
Remove a service constraint if exists.
### `swarm_init`
Initializes a swarm
**Supports noop?** false
#### Parameters
##### `advertise_addr`
Data type: `Optional[String[1]]`
Advertised address
##### `autolock`
Data type: `Optional[Boolean]`
Enable manager autolocking
##### `cert_expiry`
Data type: `Optional[String[1]]`
Validity period for node certificates
##### `dispatcher_heartbeat`
Data type: `Optional[String[1]]`
Dispatcher heartbeat period
##### `external_ca`
Data type: `Optional[String[1]]`
Specifications of one or more certificate signing endpoints
##### `force_new_cluster`
Data type: `Optional[Boolean]`
Force create a new cluster from current state
##### `listen_addr`
Data type: `Optional[String[1]]`
Listen address
##### `max_snapshots`
Data type: `Optional[Integer[1]]`
Number of additional Raft snapshots to retain
##### `snapshot_interval`
Data type: `Optional[Integer[1]]`
Number of log entries between Raft snapshots
### `swarm_join`
Join a swarm
**Supports noop?** false
#### Parameters
##### `advertise_addr`
Data type: `Optional[String[1]]`
Advertised address
##### `listen_addr`
Data type: `Optional[String[1]]`
Listen address
##### `token`
Data type: `String[1]`
Join token for the swarm
##### `manager_ip`
Data type: `String[1]`
IP Address of the swarm manager
### `swarm_leave`
Leave a swarm
**Supports noop?** false
#### Parameters
##### `force`
Data type: `Optional[Boolean]`
Force this node to leave the swarm, ignoring warnings
### `swarm_token`
Gets the swarm token from the server
**Supports noop?** false
#### Parameters
##### `node_role`
Data type: `String[1]`
The role of the node joining the swarm
### `swarm_update`
Updates an existing service.
**Supports noop?** false
#### Parameters
##### `service`
Data type: `String[1]`
The service to update
##### `image`
Data type: `String[1]`
The new image to use for the service
diff --git a/manifests/init.pp b/manifests/init.pp
index 0e66008..f016a08 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,668 +1,670 @@
# @summary
# Module to install an up-to-date version of Docker from package.
#
# @param version
# The package version to install, used to set the package name.
#
# @param ensure
# Passed to the docker package.
#
# @param prerequired_packages
# An array of additional packages that need to be installed to support docker.
#
# @param dependent_packages
# An array of packages installed by the docker-ce package v 18.09 and later.
# Used when uninstalling to ensure containers cannot be run on the system.
#
# @param tcp_bind
# The tcp socket to bind to in the format
# tcp://127.0.0.1:4243
#
# @param tls_enable
# Enable TLS.
#
# @param tls_verify
# Use TLS and verify the remote
#
# @param tls_cacert
# Path to TLS CA certificate
#
# @param tls_cert
# Path to TLS certificate file
#
# @param tls_key
# Path to TLS key file
#
# @param ip_forward
# Enables IP forwarding on the Docker host.
#
# @param iptables
# Enable Docker's addition of iptables rules.
#
# @param ip_masq
# Enable IP masquerading for bridge's IP range.
#
# @param icc
# Enable or disable Docker's unrestricted inter-container and Docker daemon host communication.
# (Requires iptables=true to disable)
#
# @param bip
# Specify docker's network bridge IP, in CIDR notation.
#
# @param mtu
# Docker network MTU.
#
# @param bridge
# Attach containers to a pre-existing network bridge
# use 'none' to disable container networking
#
# @param fixed_cidr
# IPv4 subnet for fixed IPs
# 10.20.0.0/16
#
# @param default_gateway
# IPv4 address of the container default gateway;
# this address must be part of the bridge subnet
# (which is defined by bridge)
#
# @param ipv6
# Enables ipv6 support for the docker daemon
#
# @param ipv6_cidr
# IPv6 subnet for fixed IPs
#
# @param default_gateway_ipv6
# IPv6 address of the container default gateway:
#
# @param socket_bind
# The unix socket to bind to.
#
# @param log_level
# Set the logging level
# Valid values: debug, info, warn, error, fatal
#
# @param log_driver
# Set the log driver.
# Docker default is json-file.
# Valid values: none, json-file, syslog, journald, gelf, fluentd
# Valid values description:
# none : Disables any logging for the container.
# docker logs won't be available with this driver.
# json-file: Default logging driver for Docker.
# Writes JSON messages to file.
# syslog : Syslog logging driver for Docker.
# Writes log messages to syslog.
# journald : Journald logging driver for Docker.
# Writes log messages to journald.
# gelf : Graylog Extended Log Format (GELF) logging driver for Docker.
# Writes log messages to a GELF endpoint: Graylog or Logstash.
# fluentd : Fluentd logging driver for Docker.
# Writes log messages to fluentd (forward input).
# splunk : Splunk logging driver for Docker.
# Writes log messages to Splunk (HTTP Event Collector).
# awslogs : AWS Cloudwatch Logs logging driver for Docker.
# Write log messages to Cloudwatch API
#
# @param log_opt
# Set the log driver specific options
# Valid values per log driver:
# none : undef
# json-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 : undef
# gelf :
# 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 name
# splunk :
# splunk-token=
# splunk-url=https://your_splunk_instance:8088
# awslogs :
# awslogs-group=
# awslogs-stream=
# awslogs-create-group=true|false
# awslogs-datetime-format= - strftime expression
# awslogs-multiline-pattern=multiline start pattern using a regular expression
# tag={{.ID}} - short container id (12 characters)|
# {{.FullID}} - full container id
# {{.Name}} - container name
#
# @param selinux_enabled
# Enable selinux support. Default is false. SELinux does not presently
# support the BTRFS storage driver.
#
# @param use_upstream_package_source
# Whether or not to use the upstream package source.
# If you run your own package mirror, you may set this
# to false.
#
# @param pin_upstream_package_source
# Pin upstream package source; this option currently only has any effect on
# apt-based distributions. Set to false to remove pinning on the upstream
# package repository. See also "apt_source_pin_level".
#
# @param apt_source_pin_level
# What level to pin our source package repository to; this only is relevent
# if you're on an apt-based system (Debian, Ubuntu, etc) and
# $use_upstream_package_source is set to true. Set this to false to disable
# pinning, and undef to ensure the apt preferences file apt::source uses to
# define pins is removed.
#
# @param service_state
# Whether you want to docker daemon to start up
#
# @param service_enable
# Whether you want to docker daemon to start up at boot
#
# @param manage_service
# Specify whether the service should be managed.
#
# @param root_dir
# Custom root directory for containers
#
# @param dns
# Custom dns server address
#
# @param dns_search
# Custom dns search domains
#
# @param socket_group
# Group ownership of the unix control socket.
#
# @param extra_parameters
# Any extra parameters that should be passed to the docker daemon.
#
# @param shell_values
# Array of shell values to pass into init script config files
#
# @param proxy
# Will set the http_proxy and https_proxy env variables in /etc/sysconfig/docker (redhat/centos) or /etc/default/docker (debian)
#
# @param no_proxy
# Will set the no_proxy variable in /etc/sysconfig/docker (redhat/centos) or /etc/default/docker (debian)
#
# @param storage_driver
# Specify a storage driver to use
# Valid values: aufs, devicemapper, btrfs, overlay, overlay2, vfs, zfs
#
# @param dm_basesize
# The size to use when creating the base device, which limits the size of images and containers.
#
# @param dm_fs
# The filesystem to use for the base image (xfs or ext4)
#
# @param dm_mkfsarg
# Specifies extra mkfs arguments to be used when creating the base device.
#
# @param dm_mountopt
# Specifies extra mount options used when mounting the thin devices.
#
# @param dm_blocksize
# A custom blocksize to use for the thin pool.
# Default blocksize is 64K.
# Warning: _DO NOT_ change this parameter after the lvm devices have been initialized.
#
# @param dm_loopdatasize
# Specifies the size to use when creating the loopback file for the "data" device which is used for the thin pool
#
# @param dm_loopmetadatasize
# Specifies the size to use when creating the loopback file for the "metadata" device which is used for the thin pool
#
# @param dm_datadev
# (deprecated - dm_thinpooldev should be used going forward)
# A custom blockdevice to use for data for the thin pool.
#
# @param dm_metadatadev
# (deprecated - dm_thinpooldev should be used going forward)
# A custom blockdevice to use for metadata for the thin pool.
#
# @param dm_thinpooldev
# Specifies a custom block storage device to use for the thin pool.
#
# @param dm_use_deferred_removal
# Enables use of deferred device removal if libdm and the kernel driver support the mechanism.
#
# @param dm_use_deferred_deletion
# Enables use of deferred device deletion if libdm and the kernel driver support the mechanism.
#
# @param dm_blkdiscard
# Enables or disables the use of blkdiscard when removing devicemapper devices.
#
# @param dm_override_udev_sync_check
# By default, the devicemapper backend attempts to synchronize with the udev
# device manager for the Linux kernel. This option allows disabling that
# synchronization, to continue even though the configuration may be buggy.
#
# @param overlay2_override_kernel_check
# Overrides the Linux kernel version check allowing using overlay2 with kernel < 4.0.
#
# @param manage_package
# Won't install or define the docker package, useful if you want to use your own package
#
# @param service_name
# Specify custom service name
#
# @param docker_users
# Specify an array of users to add to the docker group
#
# @param docker_group
# Specify a string for the docker group
#
# @param daemon_environment_files
# Specify additional environment files to add to the
# service-overrides.conf
#
# @param repo_opt
# Specify a string to pass as repository options (RedHat only)
#
# @param storage_devs
# A quoted, space-separated list of devices to be used.
#
# @param storage_vg
# The volume group to use for docker storage.
#
# @param storage_root_size
# The size to which the root filesystem should be grown.
#
# @param storage_data_size
# The desired size for the docker data LV
#
# @param storage_min_data_size
# The minimum size of data volume otherwise pool creation fails
#
# @param storage_chunk_size
# Controls the chunk size/block size of thin pool.
#
# @param storage_growpart
# Enable resizing partition table backing root volume group.
#
# @param storage_auto_extend_pool
# Enable/disable automatic pool extension using lvm
#
# @param storage_pool_autoextend_threshold
# Auto pool extension threshold (in % of pool size)
#
# @param storage_pool_autoextend_percent
# Extend the pool by specified percentage when threshold is hit.
#
# @param tmp_dir_config
# Whether to set the TMPDIR value in the systemd config file
# Default: true (set the value); false will comment out the line.
# Note: false is backwards compatible prior to PR #58
#
# @param tmp_dir
# Sets the tmp dir for Docker (path)
#
# @param registry_mirror
# Sets the prefered container registry mirror.
#
# @param nuget_package_provider_version
# The version of the NuGet Package provider
#
# @param docker_msft_provider_version
# The version of the Microsoft Docker Provider Module
#
# @param docker_ce_start_command
# @param docker_ce_package_name
+# @param docker_ce_cli_package_name
# @param docker_ce_source_location
# @param docker_ce_key_source
# @param docker_ce_key_id
# @param docker_ce_release
# @param docker_package_location
# @param docker_package_key_source
# @param docker_package_key_check_source
# @param docker_package_key_id
# @param docker_package_release
# @param docker_engine_start_command
# @param docker_engine_package_name
# @param docker_ce_channel
# @param docker_ee
# @param docker_ee_package_name
# @param docker_ee_source_location
# @param docker_ee_key_source
# @param docker_ee_key_id
# @param docker_ee_repos
# @param docker_ee_release
# @param package_release
# @param labels
# @param execdriver
# @param package_source
# @param os_lc
# @param storage_config
# @param storage_config_template
# @param storage_setup_file
# @param service_provider
# @param service_config
# @param service_config_template
# @param service_overrides_template
# @param socket_overrides_template
# @param socket_override
# @param service_after_override
# @param service_hasstatus
# @param service_hasrestart
# @param acknowledge_unsupported_os
#
class docker(
Optional[String] $version = $docker::params::version,
String $ensure = $docker::params::ensure,
Variant[Array[String], Hash] $prerequired_packages = $docker::params::prerequired_packages,
Array $dependent_packages = $docker::params::dependent_packages,
String $docker_ce_start_command = $docker::params::docker_ce_start_command,
Optional[String] $docker_ce_package_name = $docker::params::docker_ce_package_name,
+ String[1] $docker_ce_cli_package_name = $docker::params::docker_ce_cli_package_name,
Optional[String] $docker_ce_source_location = $docker::params::package_ce_source_location,
Optional[String] $docker_ce_key_source = $docker::params::package_ce_key_source,
Optional[String] $docker_ce_key_id = $docker::params::package_ce_key_id,
Optional[String] $docker_ce_release = $docker::params::package_ce_release,
Optional[String] $docker_package_location = $docker::params::package_source_location,
Optional[String] $docker_package_key_source = $docker::params::package_key_source,
Optional[Boolean] $docker_package_key_check_source = $docker::params::package_key_check_source,
Optional[String] $docker_package_key_id = $docker::params::package_key_id,
Optional[String] $docker_package_release = $docker::params::package_release,
String $docker_engine_start_command = $docker::params::docker_engine_start_command,
String $docker_engine_package_name = $docker::params::docker_engine_package_name,
String $docker_ce_channel = $docker::params::docker_ce_channel,
Optional[Boolean] $docker_ee = $docker::params::docker_ee,
Optional[String] $docker_ee_package_name = $docker::params::package_ee_package_name,
Optional[String] $docker_ee_source_location = $docker::params::package_ee_source_location,
Optional[String] $docker_ee_key_source = $docker::params::package_ee_key_source,
Optional[String] $docker_ee_key_id = $docker::params::package_ee_key_id,
Optional[String] $docker_ee_repos = $docker::params::package_ee_repos,
Optional[String] $docker_ee_release = $docker::params::package_ee_release,
Optional[Variant[String,Array[String]]] $tcp_bind = $docker::params::tcp_bind,
Boolean $tls_enable = $docker::params::tls_enable,
Boolean $tls_verify = $docker::params::tls_verify,
Optional[String] $tls_cacert = $docker::params::tls_cacert,
Optional[String] $tls_cert = $docker::params::tls_cert,
Optional[String] $tls_key = $docker::params::tls_key,
Boolean $ip_forward = $docker::params::ip_forward,
Boolean $ip_masq = $docker::params::ip_masq,
Optional[Boolean] $ipv6 = $docker::params::ipv6,
Optional[String] $ipv6_cidr = $docker::params::ipv6_cidr,
Optional[String] $default_gateway_ipv6 = $docker::params::default_gateway_ipv6,
Optional[String] $bip = $docker::params::bip,
Optional[String] $mtu = $docker::params::mtu,
Boolean $iptables = $docker::params::iptables,
Optional[Boolean] $icc = $docker::params::icc,
String $socket_bind = $docker::params::socket_bind,
Optional[String] $fixed_cidr = $docker::params::fixed_cidr,
Optional[String] $bridge = $docker::params::bridge,
Optional[String] $default_gateway = $docker::params::default_gateway,
Optional[String] $log_level = $docker::params::log_level,
Optional[String] $log_driver = $docker::params::log_driver,
Array $log_opt = $docker::params::log_opt,
Optional[Boolean] $selinux_enabled = $docker::params::selinux_enabled,
Optional[Boolean] $use_upstream_package_source = $docker::params::use_upstream_package_source,
Optional[Boolean] $pin_upstream_package_source = $docker::params::pin_upstream_package_source,
Optional[Integer] $apt_source_pin_level = $docker::params::apt_source_pin_level,
Optional[String] $package_release = $docker::params::package_release,
String $service_state = $docker::params::service_state,
Boolean $service_enable = $docker::params::service_enable,
Boolean $manage_service = $docker::params::manage_service,
Optional[String] $root_dir = $docker::params::root_dir,
Optional[Boolean] $tmp_dir_config = $docker::params::tmp_dir_config,
Optional[String] $tmp_dir = $docker::params::tmp_dir,
Optional[Variant[String,Array]] $dns = $docker::params::dns,
Optional[Variant[String,Array]] $dns_search = $docker::params::dns_search,
Optional[Variant[String,Boolean]] $socket_group = $docker::params::socket_group,
Array $labels = $docker::params::labels,
Optional[Variant[String,Array]] $extra_parameters = undef,
Optional[Variant[String,Array]] $shell_values = undef,
Optional[String] $proxy = $docker::params::proxy,
Optional[String] $no_proxy = $docker::params::no_proxy,
Optional[String] $storage_driver = $docker::params::storage_driver,
Optional[String] $dm_basesize = $docker::params::dm_basesize,
Optional[String] $dm_fs = $docker::params::dm_fs,
Optional[String] $dm_mkfsarg = $docker::params::dm_mkfsarg,
Optional[String] $dm_mountopt = $docker::params::dm_mountopt,
Optional[String] $dm_blocksize = $docker::params::dm_blocksize,
Optional[String] $dm_loopdatasize = $docker::params::dm_loopdatasize,
Optional[String] $dm_loopmetadatasize = $docker::params::dm_loopmetadatasize,
Optional[String] $dm_datadev = $docker::params::dm_datadev,
Optional[String] $dm_metadatadev = $docker::params::dm_metadatadev,
Optional[String] $dm_thinpooldev = $docker::params::dm_thinpooldev,
Optional[Boolean] $dm_use_deferred_removal = $docker::params::dm_use_deferred_removal,
Optional[Boolean] $dm_use_deferred_deletion = $docker::params::dm_use_deferred_deletion,
Optional[Boolean] $dm_blkdiscard = $docker::params::dm_blkdiscard,
Optional[Boolean] $dm_override_udev_sync_check = $docker::params::dm_override_udev_sync_check,
Boolean $overlay2_override_kernel_check = $docker::params::overlay2_override_kernel_check,
Optional[String] $execdriver = $docker::params::execdriver,
Boolean $manage_package = $docker::params::manage_package,
Optional[String] $package_source = $docker::params::package_source,
Optional[String] $service_name = $docker::params::service_name,
Array $docker_users = [],
String $docker_group = $docker::params::docker_group,
Array $daemon_environment_files = [],
Optional[Variant[String,Hash]] $repo_opt = $docker::params::repo_opt,
Optional[String] $os_lc = $docker::params::os_lc,
Optional[String] $storage_devs = $docker::params::storage_devs,
Optional[String] $storage_vg = $docker::params::storage_vg,
Optional[String] $storage_root_size = $docker::params::storage_root_size,
Optional[String] $storage_data_size = $docker::params::storage_data_size,
Optional[String] $storage_min_data_size = $docker::params::storage_min_data_size,
Optional[String] $storage_chunk_size = $docker::params::storage_chunk_size,
Optional[Boolean] $storage_growpart = $docker::params::storage_growpart,
Optional[String] $storage_auto_extend_pool = $docker::params::storage_auto_extend_pool,
Optional[String] $storage_pool_autoextend_threshold = $docker::params::storage_pool_autoextend_threshold,
Optional[String] $storage_pool_autoextend_percent = $docker::params::storage_pool_autoextend_percent,
Optional[Variant[String,Boolean]] $storage_config = $docker::params::storage_config,
Optional[String] $storage_config_template = $docker::params::storage_config_template,
Optional[String] $storage_setup_file = $docker::params::storage_setup_file,
Optional[String] $service_provider = $docker::params::service_provider,
Optional[Variant[String,Boolean]] $service_config = $docker::params::service_config,
Optional[String] $service_config_template = $docker::params::service_config_template,
Optional[Variant[String,Boolean]] $service_overrides_template = $docker::params::service_overrides_template,
Optional[Variant[String,Boolean]] $socket_overrides_template = $docker::params::socket_overrides_template,
Optional[Boolean] $socket_override = $docker::params::socket_override,
Optional[Variant[String,Boolean]] $service_after_override = $docker::params::service_after_override,
Optional[Boolean] $service_hasstatus = $docker::params::service_hasstatus,
Optional[Boolean] $service_hasrestart = $docker::params::service_hasrestart,
Optional[Variant[String,Array]] $registry_mirror = $docker::params::registry_mirror,
Boolean $acknowledge_unsupported_os = false,
# Windows specific parameters
Optional[String] $docker_msft_provider_version = $docker::params::docker_msft_provider_version,
Optional[String] $nuget_package_provider_version = $docker::params::nuget_package_provider_version,
Boolean $have_systemd_v230 = $docker::params::have_systemd_v230,
) inherits docker::params {
if $facts['os']['family'] and ! $acknowledge_unsupported_os {
assert_type(Pattern[/^(Debian|RedHat|windows)$/], $facts['os']['family']) |$a, $b| {
fail('This module only works on Debian, Red Hat or Windows based systems.')
}
}
if ($facts['os']['family'] == 'RedHat') and (versioncmp($facts['os']['release']['major'], '7') < 0) {
fail('This module only works on Red Hat based systems version 7 and higher.')
}
if ($default_gateway) and (!$bridge) {
fail('You must provide the $bridge parameter.')
}
if $log_level {
assert_type(Pattern[/^(debug|info|warn|error|fatal)$/], $log_level) |$a, $b| {
fail('log_level must be one of debug, info, warn, error or fatal')
}
}
if $log_driver {
if $facts['os']['family'] == 'windows' {
assert_type(Pattern[/^(none|json-file|syslog|gelf|fluentd|splunk|awslogs|etwlogs)$/], $log_driver) |$a, $b| {
fail('log_driver must be one of none, json-file, syslog, gelf, fluentd, splunk, awslogs or etwlogs')
}
} else {
assert_type(Pattern[/^(none|json-file|syslog|journald|gelf|fluentd|splunk|awslogs)$/], $log_driver) |$a, $b| {
fail('log_driver must be one of none, json-file, syslog, journald, gelf, fluentd, splunk or awslogs')
}
}
}
if $storage_driver {
if $facts['os']['family'] == 'windows' {
assert_type(Pattern[/^(windowsfilter)$/], $storage_driver) |$a, $b| {
fail('Valid values for storage_driver on windows are windowsfilter')
}
} else {
assert_type(Pattern[/^(aufs|devicemapper|btrfs|overlay|overlay2|vfs|zfs)$/], $storage_driver) |$a, $b| {
fail('Valid values for storage_driver are aufs, devicemapper, btrfs, overlay, overlay2, vfs, zfs.')
}
}
}
if ($bridge) and ($facts['os']['family'] == 'windows') {
assert_type(Pattern[/^(none|nat|transparent|overlay|l2bridge|l2tunnel)$/], $bridge) |$a, $b| {
fail('bridge must be one of none, nat, transparent, overlay, l2bridge or l2tunnel on Windows.')
}
}
if $dm_fs {
assert_type(Pattern[/^(ext4|xfs)$/], $dm_fs) |$a, $b| {
fail('Only ext4 and xfs are supported currently for dm_fs.')
}
}
if ($dm_loopdatasize or $dm_loopmetadatasize) and ($dm_datadev or $dm_metadatadev) {
fail('You should provide parameters only for loop lvm or direct lvm, not both.')
}
if ($dm_datadev or $dm_metadatadev) and $dm_thinpooldev {
fail('You can use the $dm_thinpooldev parameter, or the $dm_datadev and $dm_metadatadev parameter pair, but you cannot use both.') # lint:ignore:140chars
}
if ($dm_datadev or $dm_metadatadev) {
notice('The $dm_datadev and $dm_metadatadev parameter pair are deprecated. The $dm_thinpooldev parameter should be used instead.')
}
if ($dm_datadev and !$dm_metadatadev) or (!$dm_datadev and $dm_metadatadev) {
fail('You need to provide both $dm_datadev and $dm_metadatadev parameters for direct lvm.')
}
if ($dm_basesize or $dm_fs or $dm_mkfsarg or $dm_mountopt or $dm_blocksize or $dm_loopdatasize or $dm_loopmetadatasize or $dm_datadev or $dm_metadatadev) and ($storage_driver != 'devicemapper') {
fail('Values for dm_ variables will be ignored unless storage_driver is set to devicemapper.')
}
if($tls_enable) {
if(! $tcp_bind) {
fail('You need to provide tcp bind parameter for TLS.')
}
}
if ($version == undef) or ($version !~ /^(17[.][0-1][0-9][.][0-1](~|-|\.)ce|1.\d+)/) {
if ($docker_ee) {
$package_location = $docker::docker_ee_source_location
$package_key_source = $docker::docker_ee_key_source
$package_key_check_source = true
$package_key = $docker::docker_ee_key_id
$package_repos = $docker::docker_ee_repos
$release = $docker::docker_ee_release
$docker_start_command = $docker::docker_ee_start_command
$docker_package_name = $docker::docker_ee_package_name
} else {
case $facts['os']['family'] {
'Debian' : {
$package_location = $docker_ce_source_location
$package_key_source = $docker_ce_key_source
$package_key = $docker_ce_key_id
$package_repos = $docker_ce_channel
$release = $docker_ce_release
}
'RedHat' : {
$package_location = $docker_ce_source_location
$package_key_source = $docker_ce_key_source
$package_key_check_source = true
}
'windows': {
fail('This module only work for Docker Enterprise Edition on Windows.')
}
default: {
$package_location = $docker_package_location
$package_key_source = $docker_package_key_source
$package_key_check_source = $docker_package_key_check_source
}
}
$docker_start_command = $docker_ce_start_command
$docker_package_name = $docker_ce_package_name
}
} else {
case $facts['os']['family'] {
'Debian': {
$package_location = $docker_package_location
$package_key_source = $docker_package_key_source
$package_key_check_source = $docker_package_key_check_source
$package_key = $docker_package_key_id
$package_repos = 'main'
$release = $docker_package_release
}
'RedHat': {
$package_location = $docker_package_location
$package_key_source = $docker_package_key_source
$package_key_check_source = $docker_package_key_check_source
}
default: {
$package_location = $docker_package_location
$package_key_source = $docker_package_key_source
$package_key_check_source = $docker_package_key_check_source
}
}
$docker_start_command = $docker_engine_start_command
$docker_package_name = $docker_engine_package_name
}
if ($version != undef) and ($version =~ /^(17[.]0[0-4]|1.\d+)/) {
$root_dir_flag = '-g'
} else {
$root_dir_flag = '--data-root'
}
if $ensure != 'absent' {
contain docker::repos
contain docker::install
contain docker::config
contain docker::service
create_resources(
'docker::registry',
lookup("${module_name}::registries", Hash, 'deep', {}),
)
create_resources(
'docker::image',
lookup("${module_name}::images", Hash, 'deep', {}),
)
create_resources(
'docker::run',
lookup("${module_name}::runs", Hash, 'deep', {}),
)
Class['docker::repos']
-> Class['docker::install']
-> Class['docker::config']
-> Class['docker::service']
-> Docker::Registry <||>
-> Docker::Image <||>
-> Docker::Run <||>
} else {
contain 'docker::repos'
contain 'docker::install'
Class['docker::repos'] -> Class['docker::install']
}
}
diff --git a/manifests/install.pp b/manifests/install.pp
index 967955d..2aebe2b 100644
--- a/manifests/install.pp
+++ b/manifests/install.pp
@@ -1,134 +1,130 @@
# @summary
# Module to install an up-to-date version of Docker from a package repository.
# Only for Debian, Red Hat and Windows
#
# @param version
# The package version to install, used to set the package name.
#
# @param nuget_package_provider_version
# The version of the NuGet Package provider
#
# @param docker_msft_provider_version
# The version of the Microsoft Docker Provider Module
#
# @param docker_ee_package_name
# The name of the Docker Enterprise Edition package
#
# @param docker_download_url
#
# @param dependent_packages
#
class docker::install(
$version = $docker::version,
$nuget_package_provider_version = $docker::nuget_package_provider_version,
$docker_msft_provider_version = $docker::docker_msft_provider_version,
$docker_ee_package_name = $docker::docker_ee_package_name,
$docker_download_url = $docker::package_location,
$dependent_packages = $docker::dependent_packages,
) {
$docker_start_command = $docker::docker_start_command
if $facts['os']['family'] and ! $docker::acknowledge_unsupported_os {
assert_type(Pattern[/^(Debian|RedHat|windows)$/], $facts['os']['family']) |$a, $b| {
fail('This module only works on Debian, RedHat or Windows.')
}
}
if $docker::version and $docker::ensure != 'absent' {
$ensure = $docker::version
} else {
$ensure = $docker::ensure
}
if $docker::manage_package {
if empty($docker::repo_opt) {
$docker_hash = {}
} else {
$docker_hash = { 'install_options' => $docker::repo_opt }
}
if $docker::package_source {
- case $facts['os']['family'] {
- 'Debian' : {
- $pk_provider = 'dpkg'
- }
- 'RedHat' : {
- $pk_provider = 'yum'
- }
- 'windows' : {
- fail('Custom package source is currently not implemented on windows.')
- }
- default : {
- $pk_provider = undef
- }
+ if $facts['os']['family'] == 'windows' {
+ fail('Custom package source is currently not implemented on windows.')
}
case $docker::package_source {
/docker-engine/ : {
ensure_resource('package', 'docker', merge($docker_hash, {
- ensure => $ensure,
- provider => $pk_provider,
- source => $docker::package_source,
- name => $docker::docker_engine_package_name,
+ ensure => $ensure,
+ source => $docker::package_source,
+ name => $docker::docker_engine_package_name,
}))
}
/docker-ce/ : {
ensure_resource('package', 'docker', merge($docker_hash, {
- ensure => $ensure,
- provider => $pk_provider,
- source => $docker::package_source,
- name => $docker::docker_ce_package_name,
+ ensure => $ensure,
+ source => $docker::package_source,
+ name => $docker::docker_ce_package_name,
+ }))
+ ensure_resource('package', 'docker-ce-cli', merge($docker_hash, {
+ ensure => $ensure,
+ source => $docker::package_source,
+ name => $docker::docker_ce_cli_package_name,
}))
}
default : {}
}
} else {
if $facts['os']['family'] != 'windows' {
ensure_resource('package', 'docker', merge($docker_hash, {
ensure => $ensure,
name => $docker::docker_package_name,
}))
+ ensure_resource('package', 'docker-ce-cli', merge($docker_hash, {
+ ensure => $ensure,
+ name => $docker::docker_ce_cli_package_name,
+ }))
if $ensure == 'absent' {
ensure_resource('package', $dependent_packages, {
ensure => $ensure,
})
}
} else {
if $ensure == 'absent' {
exec { 'remove-docker-package':
command => template('docker/windows/remove_docker.ps1.erb'),
provider => powershell,
unless => template('docker/windows/check_docker.ps1.erb'),
logoutput => true,
}
} else {
if $docker::package_location {
exec { 'install-docker-package':
command => template('docker/windows/download_docker.ps1.erb'),
provider => powershell,
unless => template('docker/windows/check_docker_url.ps1.erb'),
logoutput => true,
notify => Exec['service-restart-on-failure'],
}
} else {
exec { 'install-docker-package':
command => template('docker/windows/install_powershell_provider.ps1.erb'),
provider => powershell,
unless => template('docker/windows/check_powershell_provider.ps1.erb'),
logoutput => true,
notify => Exec['service-restart-on-failure'],
}
}
exec { 'service-restart-on-failure':
command => 'SC.exe failure Docker reset= 432000 actions= restart/30000/restart/60000/restart/60000',
refreshonly => true,
logoutput => true,
provider => powershell,
}
}
}
}
}
}
diff --git a/manifests/params.pp b/manifests/params.pp
index 68dd093..91fb156 100644
--- a/manifests/params.pp
+++ b/manifests/params.pp
@@ -1,391 +1,392 @@
# @summary Default parameter values for the docker module
#
class docker::params {
$version = undef
$ensure = present
$docker_ce_start_command = 'dockerd'
$docker_ce_package_name = 'docker-ce'
+ $docker_ce_cli_package_name = 'docker-ce-cli'
$docker_engine_start_command = 'docker daemon'
$docker_engine_package_name = 'docker-engine'
$docker_ce_channel = stable
$docker_ee = false
$docker_ee_start_command = 'dockerd'
$docker_ee_source_location = undef
$docker_ee_key_source = undef
$docker_ee_key_id = undef
$docker_ee_repos = stable
$tcp_bind = undef
$tls_enable = false
$tls_verify = true
$machine_version = '0.16.1'
$ip_forward = true
$iptables = true
$ipv6 = false
$ipv6_cidr = undef
$default_gateway_ipv6 = undef
$icc = undef
$ip_masq = true
$bip = undef
$mtu = undef
$fixed_cidr = undef
$bridge = undef
$default_gateway = undef
$socket_bind = 'unix:///var/run/docker.sock'
$log_level = undef
$log_driver = undef
$log_opt = []
$selinux_enabled = undef
$socket_group_default = 'docker'
$labels = []
$service_state = running
$service_enable = true
$manage_service = true
$root_dir = undef
$tmp_dir_config = true
$tmp_dir = '/tmp/'
$dns = undef
$dns_search = undef
$proxy = undef
$compose_base_url = 'https://github.com/docker/compose/releases/download'
$compose_symlink_name = 'docker-compose'
$no_proxy = undef
$execdriver = undef
$storage_driver = undef
$dm_basesize = undef
$dm_fs = undef
$dm_mkfsarg = undef
$dm_mountopt = undef
$dm_blocksize = undef
$dm_loopdatasize = undef
$dm_loopmetadatasize = undef
$dm_datadev = undef
$dm_metadatadev = undef
$dm_thinpooldev = undef
$dm_use_deferred_removal = undef
$dm_use_deferred_deletion = undef
$dm_blkdiscard = undef
$dm_override_udev_sync_check = undef
$overlay2_override_kernel_check = false
$manage_package = true
$package_source = undef
$service_name_default = 'docker'
$docker_group_default = 'docker'
$storage_devs = undef
$storage_vg = undef
$storage_root_size = undef
$storage_data_size = undef
$storage_min_data_size = undef
$storage_chunk_size = undef
$storage_growpart = undef
$storage_auto_extend_pool = undef
$storage_pool_autoextend_threshold = undef
$storage_pool_autoextend_percent = undef
$storage_config_template = 'docker/etc/sysconfig/docker-storage.erb'
$registry_mirror = undef
$curl_ensure = true
$os_lc = downcase($facts['os']['name'])
$docker_msft_provider_version = undef
$nuget_package_provider_version = undef
$docker_command = 'docker'
if ($facts['os']['family'] == 'windows') {
$compose_install_path = "${::docker_program_files_path}/Docker"
$compose_version = '1.21.2'
$docker_ee_package_name = 'Docker'
$machine_install_path = "${::docker_program_files_path}/Docker"
$tls_cacert = "${::docker_program_data_path}/docker/certs.d/ca.pem"
$tls_cert = "${::docker_program_data_path}/docker/certs.d/server-cert.pem"
$tls_key = "${::docker_program_data_path}/docker/certs.d/server-key.pem"
} else {
$compose_install_path = '/usr/local/bin'
$compose_version = '1.21.2'
$docker_ee_package_name = 'docker-ee'
$machine_install_path = '/usr/local/bin'
$tls_cacert = '/etc/docker/tls/ca.pem'
$tls_cert = '/etc/docker/tls/cert.pem'
$tls_key = '/etc/docker/tls/key.pem'
}
case $facts['os']['family'] {
'Debian' : {
case $facts['os']['name'] {
'Ubuntu' : {
$package_release = "ubuntu-${facts['os']['distro']['codename']}"
if (versioncmp($facts['os']['release']['full'], '15.04') >= 0) {
$service_after_override = undef
$service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
$service_hasrestart = true
$service_hasstatus = true
$service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-debian.conf.erb'
$service_provider = 'systemd'
$socket_override = false
$socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
$storage_config = '/etc/default/docker-storage'
include docker::systemd_reload
} else {
$service_config_template = 'docker/etc/default/docker.erb'
$service_overrides_template = undef
$socket_overrides_template = undef
$socket_override = false
$service_after_override = undef
$service_provider = 'upstart'
$service_hasstatus = true
$service_hasrestart = false
$storage_config = undef
}
}
default: {
if (versioncmp($facts['facterversion'], '2.4.6') <= 0) {
$package_release = "debian-${facts['os']['lsb']['distcodename']}"
} else {
$package_release = "debian-${facts['os']['distro']['codename']}"
}
$service_provider = 'systemd'
$storage_config = '/etc/default/docker-storage'
$service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
$service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-debian.conf.erb'
$socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
$socket_override = false
$service_after_override = undef
$service_hasstatus = true
$service_hasrestart = true
include docker::systemd_reload
}
}
$apt_source_pin_level = 500
$docker_group = $docker_group_default
$pin_upstream_package_source = true
$repo_opt = undef
$service_config = undef
$service_name = $service_name_default
$socket_group = $socket_group_default
$storage_setup_file = undef
$use_upstream_package_source = true
$package_ce_source_location = "https://download.docker.com/linux/${os_lc}"
$package_ce_key_source = "https://download.docker.com/linux/${os_lc}/gpg"
$package_ce_key_id = '9DC858229FC7DD38854AE2D88D81803C0EBFCD88'
if (versioncmp($facts['facterversion'], '2.4.6') <= 0) {
$package_ce_release = $facts['os']['lsb']['distcodename']
} else {
$package_ce_release = $facts['os']['distro']['codename']
}
$package_source_location = 'http://apt.dockerproject.org/repo'
$package_key_source = 'https://apt.dockerproject.org/gpg'
$package_key_check_source = undef
$package_key_id = '58118E89F3A912897C070ADBF76221572C52609D'
$package_ee_source_location = $docker_ee_source_location
$package_ee_key_source = $docker_ee_key_source
$package_ee_key_id = $docker_ee_key_id
if (versioncmp($facts['facterversion'], '2.4.6') <= 0) {
$package_ee_release = $facts['os']['lsb']['distcodename']
} else {
$package_ee_release = $facts['os']['distro']['codename']
}
$package_ee_repos = $docker_ee_repos
$package_ee_package_name = $docker_ee_package_name
if ($service_provider == 'systemd') {
$detach_service_in_init = false
} else {
$detach_service_in_init = true
}
}
'RedHat' : {
$service_after_override = undef
$service_config = '/etc/sysconfig/docker'
$service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
$service_hasrestart = true
$service_hasstatus = true
$service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-rhel.conf.erb'
$service_provider = 'systemd'
$socket_override = false
$socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
$storage_config = '/etc/sysconfig/docker-storage'
$storage_setup_file = '/etc/sysconfig/docker-storage-setup'
$use_upstream_package_source = true
$apt_source_pin_level = undef
$detach_service_in_init = false
$package_ce_key_id = undef
$package_ce_key_source = 'https://download.docker.com/linux/centos/gpg'
$package_ce_release = undef
$package_ce_source_location = "https://download.docker.com/linux/centos/${facts['os']['release']['major']}/${facts['os']['architecture']}/${docker_ce_channel}"
$package_ee_key_id = $docker_ee_key_id
$package_ee_key_source = $docker_ee_key_source
$package_ee_package_name = $docker_ee_package_name
$package_ee_release = undef
$package_ee_repos = $docker_ee_repos
$package_ee_source_location = $docker_ee_source_location
$package_key_check_source = true
$package_key_id = undef
$package_key_source = 'https://yum.dockerproject.org/gpg'
$package_release = undef
$package_source_location = "https://yum.dockerproject.org/repo/main/centos/${facts['os']['release']['major']}"
$pin_upstream_package_source = undef
$service_name = $service_name_default
if $use_upstream_package_source {
$docker_group = $docker_group_default
$socket_group = $socket_group_default
} else {
$docker_group = 'dockerroot'
$socket_group = 'dockerroot'
}
$repo_opt = undef
}
'windows' : {
$msft_nuget_package_provider_version = $nuget_package_provider_version
$msft_provider_version = $docker_msft_provider_version
$msft_package_version = $version
$service_config_template = 'docker/windows/config/daemon.json.erb'
$service_config = "${::docker_program_data_path}/docker/config/daemon.json"
$docker_group = 'docker'
$package_ce_source_location = undef
$package_ce_key_source = undef
$package_ce_key_id = undef
$package_ce_repos = undef
$package_ce_release = undef
$package_key_id = undef
$package_release = undef
$package_source_location = undef
$package_key_source = undef
$package_key_check_source = undef
$package_ee_source_location = undef
$package_ee_package_name = $docker_ee_package_name
$package_ee_key_source = undef
$package_ee_key_id = undef
$package_ee_repos = undef
$package_ee_release = undef
$use_upstream_package_source = undef
$pin_upstream_package_source = undef
$apt_source_pin_level = undef
$socket_group = undef
$service_name = $service_name_default
$repo_opt = undef
$storage_config = undef
$storage_setup_file = undef
$service_provider = undef
$service_overrides_template = undef
$socket_overrides_template = undef
$socket_override = false
$service_after_override = undef
$service_hasstatus = undef
$service_hasrestart = undef
$detach_service_in_init = true
}
'Suse': {
$docker_group = $docker_group_default
$socket_group = $socket_group_default
$package_key_source = undef
$package_key_check_source = undef
$package_source_location = undef
$package_key_id = undef
$package_repos = undef
$package_release = undef
$package_ce_key_source = undef
$package_ce_source_location = undef
$package_ce_key_id = undef
$package_ce_repos = undef
$package_ce_release = undef
$package_ee_source_location = undef
$package_ee_key_source = undef
$package_ee_key_id = undef
$package_ee_release = undef
$package_ee_repos = undef
$package_ee_package_name = undef
$use_upstream_package_source = true
$service_overrides_template = undef
$socket_overrides_template = undef
$socket_override = false
$service_after_override = undef
$service_hasstatus = undef
$service_hasrestart = undef
$service_provider = 'systemd'
$package_name = $docker_ce_package_name
$service_name = $service_name_default
$detach_service_in_init = true
$repo_opt = undef
$nowarn_kernel = false
$service_config = undef
$storage_config = undef
$storage_setup_file = undef
$service_config_template = undef
$pin_upstream_package_source = undef
$apt_source_pin_level = undef
}
default: {
$docker_group = $docker_group_default
$socket_group = $socket_group_default
$package_key_source = undef
$package_key_check_source = undef
$package_source_location = undef
$package_key_id = undef
$package_repos = undef
$package_release = undef
$package_ce_key_source = undef
$package_ce_source_location = undef
$package_ce_key_id = undef
$package_ce_repos = undef
$package_ce_release = undef
$package_ee_source_location = undef
$package_ee_key_source = undef
$package_ee_key_id = undef
$package_ee_release = undef
$package_ee_repos = undef
$package_ee_package_name = undef
$use_upstream_package_source = true
$service_overrides_template = undef
$socket_overrides_template = undef
$socket_override = false
$service_after_override = undef
$service_hasstatus = undef
$service_hasrestart = undef
$service_provider = undef
$package_name = $docker_ce_package_name
$service_name = $service_name_default
$detach_service_in_init = true
$repo_opt = undef
$nowarn_kernel = false
$service_config = undef
$storage_config = undef
$storage_setup_file = undef
$service_config_template = undef
$pin_upstream_package_source = undef
$apt_source_pin_level = undef
}
}
# Special extra packages are required on some OSes.
# Specifically apparmor is needed for Ubuntu:
# https://github.com/docker/docker/issues/4734
$prerequired_packages = $facts['os']['family'] ? {
'Debian' => $facts['os']['name'] ? {
'Debian' => [ 'cgroupfs-mount', ],
'Ubuntu' => [ 'cgroup-lite', 'apparmor', ],
default => [],
},
'RedHat' => ['device-mapper'],
default => [],
}
- $dependent_packages = [ 'docker-ce-cli', 'containerd.io', ]
+ $dependent_packages = [ $docker_ce_cli_package_name, 'containerd.io', ]
if($service_provider == 'systemd') {
# systemd v230 adds new StartLimitIntervalSec, StartLimitBurst
if($::osfamily == 'RedHat' and versioncmp($::operatingsystemrelease, '8') < 0) {
$have_systemd_v230 = false
} elsif($::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '18.04') < 0) {
$have_systemd_v230 = false
} elsif($::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '9') < 0) {
$have_systemd_v230 = false
} else {
$have_systemd_v230 = true
}
} else {
$have_systemd_v230 = false
}
}
diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb
old mode 100755
new mode 100644
index cd94d34..0e4ab60
--- a/spec/classes/init_spec.rb
+++ b/spec/classes/init_spec.rb
@@ -1,224 +1,225 @@
# frozen_string_literal: true
require 'spec_helper'
tests = {
'with default values' => {
},
'with docker_users set' => {
'docker_users' => [
'some_random_user',
'foo',
'bar',
],
},
'with package_source set to docker-engine' => {
'package_source' => 'docker-engine',
},
'with package_source set to docker-ce' => {
'package_source' => 'docker-ce',
},
'with ensure set to absent' => {
'ensure' => 'absent',
},
'with ensure set to absent and given version' => {
'ensure' => 'absent',
'version' => '16',
},
'with ms parameter set' => {
'version' => '16',
'docker_msft_provider_version' => '123',
'nuget_package_provider_version' => '41',
},
}
describe 'docker', type: :class do
on_supported_os.each do |os, os_facts|
##
## set some needed facts
##
if %r{windows}.match?(os)
facts = windows_facts.merge(os_facts)
default_params = {
'docker_ee' => true,
'docker_users' => [],
}
else
facts = os_facts
default_params = {
'docker_users' => [],
}
end
##
## get default values based on facts
##
defaults = get_defaults(facts)
context "on #{os}" do
tests.each do |title, local_params|
context title do
params = {
'acknowledge_unsupported_os' => false,
'apt_source_pin_level' => defaults['apt_source_pin_level'],
'bip' => defaults['bip'],
'bridge' => defaults['bridge'],
'daemon_environment_files' => [],
'default_gateway_ipv6' => defaults['default_gateway_ipv6'],
'default_gateway' => defaults['default_gateway'],
'dependent_packages' => defaults['dependent_packages'],
'dm_basesize' => defaults['dm_basesize'],
'dm_blkdiscard' => defaults['dm_blkdiscard'],
'dm_blocksize' => defaults['dm_blocksize'],
'dm_datadev' => defaults['dm_datadev'],
'dm_fs' => defaults['dm_fs'],
'dm_loopdatasize' => defaults['dm_loopdatasize'],
'dm_loopmetadatasize' => defaults['dm_loopmetadatasize'],
'dm_metadatadev' => defaults['dm_metadatadev'],
'dm_mkfsarg' => defaults['dm_mkfsarg'],
'dm_mountopt' => defaults['dm_mountopt'],
'dm_override_udev_sync_check' => defaults['dm_override_udev_sync_check'],
'dm_thinpooldev' => defaults['dm_thinpooldev'],
'dm_use_deferred_deletion' => defaults['dm_use_deferred_deletion'],
'dm_use_deferred_removal' => defaults['dm_use_deferred_removal'],
'dns_search' => defaults['dns_search'],
'dns' => defaults['dns'],
'docker_ce_channel' => defaults['docker_ce_channel'],
'docker_ce_key_id' => defaults['package_ce_key_id'],
'docker_ce_key_source' => defaults['package_ce_key_source'],
'docker_ce_package_name' => defaults['docker_ce_package_name'],
+ 'docker_ce_cli_package_name' => defaults['docker_ce_cli_package_name'],
'docker_ce_release' => defaults['package_ce_release'],
'docker_ce_source_location' => defaults['package_ce_source_location'],
'docker_ce_start_command' => defaults['docker_ce_start_command'],
'docker_ee_key_id' => defaults['package_ee_key_id'],
'docker_ee_key_source' => defaults['package_ee_key_source'],
'docker_ee_package_name' => defaults['package_ee_package_name'],
'docker_ee_release' => defaults['package_ee_release'],
'docker_ee_repos' => defaults['package_ee_repos'],
'docker_ee_source_location' => defaults['package_ee_source_location'],
'docker_ee' => defaults['docker_ee'],
'docker_engine_package_name' => defaults['docker_engine_package_name'],
'docker_engine_start_command' => defaults['docker_engine_start_command'],
'docker_group' => defaults['docker_group'],
'docker_msft_provider_version' => defaults['docker_msft_provider_version'],
'docker_package_key_check_source' => defaults['package_key_check_source'],
'docker_package_key_id' => defaults['package_key_id'],
'docker_package_key_source' => defaults['package_key_source'],
'docker_package_location' => defaults['package_source_location'],
'docker_package_release' => defaults['package_release'],
'docker_users' => [],
'ensure' => defaults['package_ensure'],
'execdriver' => defaults['execdriver'],
'extra_parameters' => :undef,
'fixed_cidr' => defaults['fixed_cidr'],
'icc' => defaults['icc'],
'ip_forward' => defaults['ip_forward'],
'ip_masq' => defaults['ip_masq'],
'iptables' => defaults['iptables'],
'ipv6_cidr' => defaults['ipv6_cidr'],
'ipv6' => defaults['ipv6'],
'labels' => defaults['labels'],
'log_driver' => defaults['log_driver'],
'log_level' => defaults['log_level'],
'log_opt' => defaults['log_opt'],
'manage_package' => defaults['manage_package'],
'manage_service' => defaults['manage_service'],
'mtu' => defaults['mtu'],
'no_proxy' => defaults['no_proxy'],
'nuget_package_provider_version' => defaults['nuget_package_provider_version'],
'os_lc' => defaults['os_lc'],
'overlay2_override_kernel_check' => defaults['overlay2_override_kernel_check'],
'package_release' => defaults['package_release'],
'package_source' => defaults['package_source'],
'pin_upstream_package_source' => defaults['pin_upstream_package_source'],
'prerequired_packages' => defaults['prerequired_packages'],
'proxy' => defaults['proxy'],
'registry_mirror' => defaults['registry_mirror'],
'repo_opt' => defaults['repo_opt'],
'root_dir' => defaults['root_dir'],
'selinux_enabled' => defaults['selinux_enabled'],
'service_after_override' => defaults['service_after_override'],
'service_config_template' => defaults['service_config_template'],
'service_config' => defaults['service_config'],
'service_enable' => defaults['service_enable'],
'service_hasrestart' => defaults['service_hasrestart'],
'service_hasstatus' => defaults['service_hasstatus'],
'service_name' => defaults['service_name'],
'service_overrides_template' => defaults['service_overrides_template'],
'service_provider' => defaults['service_provider'],
'service_state' => defaults['service_state'],
'shell_values' => :undef,
'socket_bind' => defaults['socket_bind'],
'socket_group' => defaults['socket_group'],
'socket_override' => defaults['socket_override'],
'socket_overrides_template' => defaults['socket_overrides_template'],
'storage_auto_extend_pool' => defaults['storage_auto_extend_pool'],
'storage_chunk_size' => defaults['storage_chunk_size'],
'storage_config_template' => defaults['storage_config_template'],
'storage_config' => defaults['storage_config'],
'storage_data_size' => defaults['storage_data_size'],
'storage_devs' => defaults['storage_devs'],
'storage_driver' => defaults['storage_driver'],
'storage_growpart' => defaults['storage_growpart'],
'storage_min_data_size' => defaults['storage_min_data_size'],
'storage_pool_autoextend_percent' => defaults['storage_pool_autoextend_percent'],
'storage_pool_autoextend_threshold' => defaults['storage_pool_autoextend_threshold'],
'storage_root_size' => defaults['storage_root_size'],
'storage_setup_file' => defaults['storage_setup_file'],
'storage_vg' => defaults['storage_vg'],
'tcp_bind' => defaults['tcp_bind'],
'tls_cacert' => defaults['tls_cacert'],
'tls_cert' => defaults['tls_cert'],
'tls_enable' => defaults['tls_enable'],
'tls_key' => defaults['tls_key'],
'tls_verify' => defaults['tls_verify'],
'tmp_dir_config' => defaults['tmp_dir_config'],
'tmp_dir' => defaults['tmp_dir'],
'use_upstream_package_source' => defaults['use_upstream_package_source'],
'version' => defaults['version'],
}.merge(default_params).merge(local_params)
let(:facts) do
facts
end
let(:params) do
params
end
if params['ensure'] != 'absent'
if params['package_source'] != :undef && facts[:os]['family'].include?('windows')
it {
is_expected.to compile.and_raise_error(%r{Custom package source is currently not implemented on windows.})
}
else
it {
is_expected.to contain_class('docker::repos').that_comes_before('Class[docker::install]')
is_expected.to contain_class('docker::install').that_comes_before('Class[docker::config]')
is_expected.to contain_class('docker::config').that_comes_before('Class[docker::service]')
is_expected.to contain_class('docker::service')
}
include_examples 'params', facts
include_examples 'repos', params, facts
include_examples 'install', params, facts
include_examples 'config', params, facts
include_examples 'service', params, facts
end
else
it {
is_expected.to contain_class('docker::repos').that_comes_before('Class[docker::install]')
is_expected.to contain_class('docker::install')
}
include_examples 'params', facts
include_examples 'repos', params, facts
include_examples 'install', params, facts
end
end
end
end
end
end
diff --git a/spec/helper/get_defaults.rb b/spec/helper/get_defaults.rb
index ec5f6a5..8933675 100644
--- a/spec/helper/get_defaults.rb
+++ b/spec/helper/get_defaults.rb
@@ -1,502 +1,504 @@
# frozen_string_literal: true
def get_defaults(_facts)
bip = :undef
bridge = :undef
compose_base_url = 'https://github.com/docker/compose/releases/download'
compose_symlink_name = 'docker-compose'
curl_ensure = true
default_gateway = :undef
default_gateway_ipv6 = :undef
dm_basesize = :undef
dm_blkdiscard = :undef
dm_blocksize = :undef
dm_datadev = :undef
dm_fs = :undef
dm_loopdatasize = :undef
dm_loopmetadatasize = :undef
dm_metadatadev = :undef
dm_mkfsarg = :undef
dm_mountopt = :undef
dm_override_udev_sync_check = :undef
dm_thinpooldev = :undef
dm_use_deferred_deletion = :undef
dm_use_deferred_removal = :undef
dns = :undef
dns_search = :undef
docker_ce_channel = 'stable'
docker_ce_package_name = 'docker-ce'
+ docker_ce_cli_package_name = 'docker-ce-cli'
docker_ce_start_command = 'dockerd'
docker_command = 'docker'
docker_ee = false
docker_ee_key_id = :undef
docker_ee_key_source = :undef
docker_ee_repos = 'stable'
docker_ee_source_location = :undef
docker_ee_start_command = 'dockerd'
docker_engine_package_name = 'docker-engine'
docker_engine_start_command = 'docker daemon'
docker_group_default = 'docker'
docker_msft_provider_version = :undef
package_ensure = 'present'
execdriver = :undef
fixed_cidr = :undef
icc = :undef
ip_forward = true
ip_masq = true
iptables = true
ipv6 = false
ipv6_cidr = :undef
labels = []
log_driver = :undef
log_level = :undef
log_opt = []
machine_version = '0.16.1'
manage_package = true
manage_service = true
mtu = :undef
no_proxy = :undef
nuget_package_provider_version = :undef
os_lc = _facts[:os]['name']
overlay2_override_kernel_check = false
package_source = :undef
proxy = :undef
registry_mirror = :undef
root_dir = :undef
selinux_enabled = :undef
service_enable = true
service_name_default = 'docker'
service_state = 'running'
socket_bind = 'unix:///var/run/docker.sock'
socket_group_default = 'docker'
storage_auto_extend_pool = :undef
storage_chunk_size = :undef
storage_config_template = 'docker/etc/sysconfig/docker-storage.erb'
storage_data_size = :undef
storage_devs = :undef
storage_driver = :undef
storage_growpart = :undef
storage_min_data_size = :undef
storage_pool_autoextend_percent = :undef
storage_pool_autoextend_threshold = :undef
storage_root_size = :undef
storage_vg = :undef
tcp_bind = :undef
tls_enable = false
tls_verify = true
tmp_dir = '/tmp/'
tmp_dir_config = true
version = :undef
if _facts[:os]['family'] == 'windows'
compose_install_path = "#{_facts['docker_program_files_path']}/Docker"
compose_version = '1.21.2'
docker_ee_package_name = 'Docker'
machine_install_path = "#{_facts['docker_program_files_path']}/Docker"
tls_cacert = "#{_facts['docker_program_data_path']}/docker/certs.d/ca.pem"
tls_cert = "#{_facts['docker_program_data_path']}/docker/certs.d/server-cert.pem"
tls_key = "#{_facts['docker_program_data_path']}/docker/certs.d/server-key.pem"
else
compose_install_path = '/usr/local/bin'
compose_version = '1.9.0'
docker_ee_package_name = 'docker-ee'
machine_install_path = '/usr/local/bin'
tls_cacert = '/etc/docker/tls/ca.pem'
tls_cert = '/etc/docker/tls/cert.pem'
tls_key = '/etc/docker/tls/key.pem'
end
case _facts[:os]['family']
when 'Debian'
case _facts[:os]['name']
when 'Ubuntu'
package_release = "ubuntu-#{_facts[:os]['distro']['codename']}"
if _facts[:os]['release']['full'] != '14.04'
service_after_override = :undef
service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
service_hasrestart = true
service_hasstatus = true
service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-debian.conf.erb'
service_provider = 'systemd'
socket_override = false
socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
storage_config = '/etc/default/docker-storage'
else
service_after_override = :undef
service_config_template = 'docker/etc/default/docker.erb'
service_hasrestart = false
service_hasstatus = true
service_overrides_template = :undef
service_provider = 'upstart'
socket_override = false
socket_overrides_template = :undef
storage_config = :undef
end
else
package_release = "debian-#{_facts[:os]['distro']['codename']}"
service_after_override = :undef
service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
service_hasrestart = true
service_hasstatus = true
service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-debian.conf.erb'
service_provider = 'systemd'
socket_override = false
socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
storage_config = '/etc/default/docker-storage'
end
apt_source_pin_level = 500
docker_group = docker_group_default
pin_upstream_package_source = true
repo_opt = :undef
service_config = :undef
service_name = service_name_default
socket_group = socket_group_default
storage_setup_file = :undef
use_upstream_package_source = true
package_ce_key_id = '9DC858229FC7DD38854AE2D88D81803C0EBFCD88'
package_ce_key_source = "https://download.docker.com/linux/#{os_lc}/gpg"
package_ce_release = _facts[:os]['distro']['codename']
package_ce_source_location = "https://download.docker.com/linux/#{os_lc}"
package_ee_key_id = docker_ee_key_id
package_ee_key_source = docker_ee_key_source
package_ee_package_name = docker_ee_package_name
package_ee_release = _facts[:os]['distro']['codename']
package_ee_repos = docker_ee_repos
package_ee_source_location = docker_ee_source_location
package_key_check_source = :undef
package_key_id = '58118E89F3A912897C070ADBF76221572C52609D'
package_key_source = 'https://apt.dockerproject.org/gpg'
package_source_location = 'http://apt.dockerproject.org/repo'
detach_service_in_init = if service_provider == 'systemd'
false
else
true
end
when 'RedHat'
service_after_override = :undef
service_config = '/etc/sysconfig/docker'
service_config_template = 'docker/etc/sysconfig/docker.systemd.erb'
service_hasrestart = true
service_hasstatus = true
service_overrides_template = 'docker/etc/systemd/system/docker.service.d/service-overrides-rhel.conf.erb'
service_provider = 'systemd'
socket_override = false
socket_overrides_template = 'docker/etc/systemd/system/docker.socket.d/socket-overrides.conf.erb'
storage_config = '/etc/sysconfig/docker-storage'
storage_setup_file = '/etc/sysconfig/docker-storage-setup'
use_upstream_package_source = true
apt_source_pin_level = :undef
detach_service_in_init = false
package_ce_key_id = :undef
package_ce_key_source = 'https://download.docker.com/linux/centos/gpg'
package_ce_release = :undef
package_ce_source_location = "https://download.docker.com/linux/centos/#{_facts[:os]['release']['major']}/#{_facts[:os]['architecture']}/#{docker_ce_channel}"
package_ee_key_id = docker_ee_key_id
package_ee_key_source = docker_ee_key_source
package_ee_package_name = docker_ee_package_name
package_ee_release = :undef
package_ee_repos = docker_ee_repos
package_ee_source_location = docker_ee_source_location
package_key_check_source = true
package_key_id = :undef
package_key_source = 'https://yum.dockerproject.org/gpg'
package_release = :undef
package_source_location = "https://yum.dockerproject.org/repo/main/centos/#{_facts[:os]['release']['major']}"
pin_upstream_package_source = :undef
service_name = service_name_default
if use_upstream_package_source
docker_group = docker_group_default
socket_group = socket_group_default
else
docker_group = 'dockerroot'
socket_group = 'dockerroot'
end
# repo_opt to specify install_options for docker package
repo_opt = if _facts[:os]['name'] == 'RedHat'
'--enablerepo=rhel-7-server-extras-rpms'
else
:undef
end
when 'windows'
msft_nuget_package_provider_version = nuget_package_provider_version
msft_provider_version = docker_msft_provider_version
msft_package_version = version
service_config_template = 'docker/windows/config/daemon.json.erb'
service_config = "#{_facts['docker_program_data_path']}/docker/config/daemon.json"
docker_group = 'docker'
package_ce_source_location = :undef
package_ce_key_source = :undef
package_ce_key_id = :undef
package_ce_repos = :undef
package_ce_release = :undef
package_key_id = :undef
package_release = :undef
package_source_location = :undef
package_key_source = :undef
package_key_check_source = :undef
package_ee_source_location = :undef
package_ee_package_name = docker_ee_package_name
package_ee_key_source = :undef
package_ee_key_id = :undef
package_ee_repos = :undef
package_ee_release = :undef
use_upstream_package_source = :undef
pin_upstream_package_source = :undef
apt_source_pin_level = :undef
socket_group = :undef
service_name = service_name_default
repo_opt = :undef
storage_config = :undef
storage_setup_file = :undef
service_provider = :undef
service_overrides_template = :undef
socket_overrides_template = :undef
socket_override = false
service_after_override = :undef
service_hasstatus = :undef
service_hasrestart = :undef
detach_service_in_init = true
when 'Suse'
docker_group = docker_group_default
socket_group = socket_group_default
package_key_source = :undef
package_key_check_source = :undef
package_source_location = :undef
package_key_id = :undef
package_repos = :undef
package_release = :undef
package_ce_key_source = :undef
package_ce_source_location = :undef
package_ce_key_id = :undef
package_ce_repos = :undef
package_ce_release = :undef
package_ee_source_location = :undef
package_ee_key_source = :undef
package_ee_key_id = :undef
package_ee_release = :undef
package_ee_repos = :undef
package_ee_package_name = :undef
use_upstream_package_source = true
service_overrides_template = :undef
socket_overrides_template = :undef
socket_override = false
service_after_override = :undef
service_hasstatus = :undef
service_hasrestart = :undef
service_provider = 'systemd'
package_name = docker_ce_package_name
service_name = service_name_default
detach_service_in_init = true
repo_opt = :undef
nowarn_kernel = false
service_config = :undef
storage_config = :undef
storage_setup_file = :undef
service_config_template = :undef
pin_upstream_package_source = :undef
apt_source_pin_level = :undef
else
docker_group = docker_group_default
socket_group = socket_group_default
package_key_source = :undef
package_key_check_source = :undef
package_source_location = :undef
package_key_id = :undef
package_repos = :undef
package_release = :undef
package_ce_key_source = :undef
package_ce_source_location = :undef
package_ce_key_id = :undef
package_ce_repos = :undef
package_ce_release = :undef
package_ee_source_location = :undef
package_ee_key_source = :undef
package_ee_key_id = :undef
package_ee_release = :undef
package_ee_repos = :undef
package_ee_package_name = :undef
use_upstream_package_source = true
service_overrides_template = :undef
socket_overrides_template = :undef
socket_override = false
service_after_override = :undef
service_hasstatus = :undef
service_hasrestart = :undef
service_provider = :undef
package_name = docker_ce_package_name
service_name = service_name_default
detach_service_in_init = true
repo_opt = :undef
nowarn_kernel = false
service_config = :undef
storage_config = :undef
storage_setup_file = :undef
service_config_template = :undef
pin_upstream_package_source = :undef
apt_source_pin_level = :undef
end
- dependent_packages = ['docker-ce-cli', 'containerd.io']
+ dependent_packages = [docker_ce_cli_package_name, 'containerd.io']
prerequired_packages = case _facts[:os]['family']
when 'Debian'
case _facts[:os]['name']
when 'Debian'
['cgroupfs-mount']
when 'Ubuntu'
['cgroup-lite', 'apparmor']
else
[]
end
when 'RedHat'
['device-mapper']
else
[]
end
{
'apt_source_pin_level' => apt_source_pin_level,
'bip' => bip,
'bridge' => bridge,
'compose_base_url' => compose_base_url,
'compose_install_path' => compose_install_path,
'compose_symlink_name' => compose_symlink_name,
'compose_version' => compose_version,
'curl_ensure' => curl_ensure,
'default_gateway' => default_gateway,
'default_gateway_ipv6' => default_gateway_ipv6,
'dependent_packages' => dependent_packages,
'detach_service_in_init' => detach_service_in_init,
'dm_basesize' => dm_basesize,
'dm_blkdiscard' => dm_blkdiscard,
'dm_blocksize' => dm_blocksize,
'dm_datadev' => dm_datadev,
'dm_fs' => dm_fs,
'dm_loopdatasize' => dm_loopdatasize,
'dm_loopmetadatasize' => dm_loopmetadatasize,
'dm_metadatadev' => dm_metadatadev,
'dm_mkfsarg' => dm_mkfsarg,
'dm_mountopt' => dm_mountopt,
'dm_override_udev_sync_check' => dm_override_udev_sync_check,
'dm_thinpooldev' => dm_thinpooldev,
'dm_use_deferred_deletion' => dm_use_deferred_deletion,
'dm_use_deferred_removal' => dm_use_deferred_removal,
'dns' => dns,
'dns_search' => dns_search,
'docker_ce_channel' => docker_ce_channel,
'docker_ce_package_name' => docker_ce_package_name,
+ 'docker_ce_cli_package_name' => docker_ce_cli_package_name,
'docker_ce_start_command' => docker_ce_start_command,
'docker_command' => docker_command,
'docker_ee' => docker_ee,
'docker_ee_key_id' => docker_ee_key_id,
'docker_ee_key_source' => docker_ee_key_source,
'docker_ee_package_name' => docker_ee_package_name,
'docker_ee_repos' => docker_ee_repos,
'docker_ee_source_location' => docker_ee_source_location,
'docker_ee_start_command' => docker_ee_start_command,
'docker_engine_package_name' => docker_engine_package_name,
'docker_engine_start_command' => docker_engine_start_command,
'docker_group' => docker_group,
'docker_group_default' => docker_group_default,
'docker_msft_provider_version' => docker_msft_provider_version,
'execdriver' => execdriver,
'fixed_cidr' => fixed_cidr,
'icc' => icc,
'ip_forward' => ip_forward,
'ip_masq' => ip_masq,
'iptables' => iptables,
'ipv6' => ipv6,
'ipv6_cidr' => ipv6_cidr,
'labels' => labels,
'log_driver' => log_driver,
'log_level' => log_level,
'log_opt' => log_opt,
'machine_install_path' => machine_install_path,
'machine_version' => machine_version,
'manage_package' => manage_package,
'manage_service' => manage_service,
'msft_nuget_package_provider_version' => msft_nuget_package_provider_version,
'msft_package_version' => msft_package_version,
'msft_provider_version' => msft_provider_version,
'mtu' => mtu,
'no_proxy' => no_proxy,
'nowarn_kernel' => nowarn_kernel,
'nuget_package_provider_version' => nuget_package_provider_version,
'os_lc' => os_lc,
'overlay2_override_kernel_check' => overlay2_override_kernel_check,
'package_ce_key_id' => package_ce_key_id,
'package_ce_key_source' => package_ce_key_source,
'package_ce_release' => package_ce_release,
'package_ce_repos' => package_ce_repos,
'package_ce_source_location' => package_ce_source_location,
'package_ee_key_id' => package_ee_key_id,
'package_ee_key_source' => package_ee_key_source,
'package_ee_package_name' => package_ee_package_name,
'package_ee_release' => package_ee_release,
'package_ee_repos' => package_ee_repos,
'package_ee_source_location' => package_ee_source_location,
'package_ensure' => package_ensure,
'package_key_check_source' => package_key_check_source,
'package_key_id' => package_key_id,
'package_key_source' => package_key_source,
'package_name' => package_name,
'package_release' => package_release,
'package_repos' => package_repos,
'package_source' => package_source,
'package_source_location' => package_source_location,
'pin_upstream_package_source' => pin_upstream_package_source,
'prerequired_packages' => prerequired_packages,
'proxy' => proxy,
'registry_mirror' => registry_mirror,
'repo_opt' => repo_opt,
'root_dir' => root_dir,
'selinux_enabled' => selinux_enabled,
'service_after_override' => service_after_override,
'service_config' => service_config,
'service_config_template' => service_config_template,
'service_enable' => service_enable,
'service_hasrestart' => service_hasrestart,
'service_hasstatus' => service_hasstatus,
'service_name' => service_name,
'service_name_default' => service_name_default,
'service_overrides_template' => service_overrides_template,
'service_provider' => service_provider,
'service_state' => service_state,
'socket_bind' => socket_bind,
'socket_group' => socket_group,
'socket_group_default' => socket_group_default,
'socket_override' => socket_override,
'socket_overrides_template' => socket_overrides_template,
'storage_auto_extend_pool' => storage_auto_extend_pool,
'storage_chunk_size' => storage_chunk_size,
'storage_config' => storage_config,
'storage_config_template' => storage_config_template,
'storage_data_size' => storage_data_size,
'storage_devs' => storage_devs,
'storage_driver' => storage_driver,
'storage_growpart' => storage_growpart,
'storage_min_data_size' => storage_min_data_size,
'storage_pool_autoextend_threshold' => storage_pool_autoextend_percent,
'storage_pool_autoextend_percent' => storage_pool_autoextend_percent,
'storage_root_size' => storage_root_size,
'storage_setup_file' => storage_setup_file,
'storage_vg' => storage_vg,
'tcp_bind' => tcp_bind,
'tls_cacert' => tls_cacert,
'tls_cert' => tls_cert,
'tls_enable' => tls_enable,
'tls_key' => tls_key,
'tls_verify' => tls_verify,
'tmp_dir' => tmp_dir,
'tmp_dir_config' => tmp_dir_config,
'use_upstream_package_source' => use_upstream_package_source,
'version' => version,
}
end
diff --git a/spec/shared_examples/install.rb b/spec/shared_examples/install.rb
index e7b87f7..d8e31bd 100644
--- a/spec/shared_examples/install.rb
+++ b/spec/shared_examples/install.rb
@@ -1,154 +1,158 @@
# frozen_string_literal: true
shared_examples 'install' do |_params, _facts|
values = get_values_init(_params, _facts)
ensure_value = if _params['version'] != :undef && _params['ensure'] != 'absent'
_params['version']
else
_params['ensure']
end
if _params['manage_package']
docker_hash = if _params['repo_opt'] == :undef
{}
else
{ 'install_options' => _params['repo_opt'] }
end
if _params['package_source'] != :undef
it {
is_expected.to contain_class('docker::install')
}
- provider_value = case _facts[:os]['family']
- when 'Debian'
- 'dpkg'
- when 'RedHat'
- 'yum'
- else
- :undef
- end
-
case _params['package_source']
when 'docker-engine'
it {
is_expected.to contain_package('docker').with(
{
'ensure' => ensure_value,
- 'provider' => provider_value,
'source' => _params['package_source'],
'name' => _params['docker_engine_package_name'],
}.merge(docker_hash),
)
}
when 'docker-ce'
it {
is_expected.to contain_package('docker').with(
{
'ensure' => ensure_value,
- 'provider' => provider_value,
'source' => _params['package_source'],
'name' => _params['docker_ce_package_name'],
}.merge(docker_hash),
)
}
+ it {
+ is_expected.to contain_package('docker-ce-cli').with(
+ {
+ 'ensure' => ensure_value,
+ 'source' => _params['package_source'],
+ 'name' => _params['docker_ce_cli_package_name'],
+ }.merge(docker_hash),
+ )
+ }
end
elsif _facts[:os]['family'] != 'windows'
it {
is_expected.to contain_package('docker').with(
'ensure' => ensure_value,
'name' => values['docker_package_name'],
)
}
+ it {
+ is_expected.to contain_package('docker-ce-cli').with(
+ 'ensure' => ensure_value,
+ 'name' => _params['docker_ce_cli_package_name'],
+ )
+ }
if ensure_value == 'absent'
_params['dependent_packages'].each do |dependent_package|
it {
is_expected.to contain_package(dependent_package).with(
'ensure' => ensure_value,
)
}
end
end
elsif ensure_value == 'absent'
it {
if _params['version'] != :undef
is_expected.to contain_exec('remove-docker-package').with(
'command' => %r{-RequiredVersion #{_params['version']}},
)
end
is_expected.to contain_exec('remove-docker-package').with(
'command' => %r{\$package=Uninstall-Package #{_params['docker_ee_package_name']} -ProviderName \$dockerProviderName -Force},
'provider' => 'powershell',
'unless' => %r{\$package=Get-Package #{_params['docker_ee_package_name']} -ProviderName \$dockerProviderName -ErrorAction Ignore},
'logoutput' => true,
)
}
else
if _params['package_location']
it {
is_expected.to contain_exec('install-docker-package').with(
'command' => %r{Invoke-webrequest -UseBasicparsing -Outfile \$dockerLocation "#{_params['docker_download_url']}"},
'provider' => 'powershell',
'unless' => %r{\$webRequest = \[System.Net.HttpWebRequest\]::Create("#{_params['docker_download_url']}");},
'logoutput' => true,
).that_notifies(
'Exec[service-restart-on-failure]',
)
}
else
it {
if _params['nuget_package_provider_version'] != :undef
is_expected. to contain_exec(
'install-docker-package',
).with_command(
%r{-RequiredVersion #{_params['nuget_package_provider_version']}},
).with_unless(
%r{\$module.Version.ToString\(\) -ne "#{_params['nuget_package_provider_version']}"},
)
end
if _params['docker_msft_provider_version'] != :undef
is_expected. to contain_exec(
'install-docker-package',
).with_command(
%r{-RequiredVersion #{_params['docker_msft_provider_version']}},
).with_unless(
%r{\$provider.Version.ToString\(\) -ne "#{_params['docker_msft_provider_version']}"},
)
end
if _params['version'] != :undef
is_expected.to contain_exec(
'install-docker-package',
).with_command(
%r{-RequiredVersion #{_params['version']}},
).with_unless(
%r{\$package.Version.ToString\(\) -notmatch "#{_params['version']}"},
)
end
is_expected.to contain_exec('install-docker-package').with(
'command' => %r{\$package=Install-Package #{_params['docker_ee_package_name']} -ProviderName \$dockerProviderName -Force},
'provider' => 'powershell',
'unless' => %r{\$package=Get-Package #{_params['docker_ee_package_name']} -ProviderName \$dockerProviderName},
'logoutput' => true,
).that_notifies(
'Exec[service-restart-on-failure]',
)
}
end
it {
is_expected.to contain_exec('service-restart-on-failure').with(
'command' => 'SC.exe failure Docker reset= 432000 actions= restart/30000/restart/60000/restart/60000',
'refreshonly' => true,
'logoutput' => true,
'provider' => 'powershell',
)
}
end
end
end