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