Puppet Class: docker

Inherits:
docker::params
Defined in:
manifests/init.pp

Overview

Class: docker

Module to install an up-to-date version of Docker from package.

Parameters

version

The package version to install, used to set the package name. Defaults to undefined

ensure

Passed to the docker package. Defaults to present

prerequired_packages

An array of additional packages that need to be installed to support docker. Defaults change depending on the operating system.

tcp_bind

The tcp socket to bind to in the format tcp://127.0.0.1:4243 Defaults to undefined

socket_bind

The unix socket to bind to. Defaults to unix:///var/run/docker.sock.

log_level

Set the logging level Defaults to undef: docker defaults to info if no value specified Valid values: debug, info, warn, error, fatal

selinux_enabled

Enable selinux support. Default is false. SELinux does not presently support the BTRFS storage driver. Valid values: true, false

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.

package_source_location

If you’re using an upstream package source, what is it’s location. Defaults to get.docker.com/ubuntu on Debian

service_state

Whether you want to docker daemon to start up Defaults to running

service_enable

Whether you want to docker daemon to start up at boot Defaults to true

root_dir

Custom root directory for containers Defaults to undefined

manage_kernel

Attempt to install the correct Kernel required by docker Defaults to true

dns

Custom dns server address Defaults to undefined

dns_search

Custom dns search domains Defaults to undefined

socket_group

Group ownership of the unix control socket. Defaults to undefined

extra_parameters

Any extra parameters that should be passed to the docker daemon. Defaults to undefined

shell_values

Array of shell values to pass into init script config files

proxy

Will set the http_proxy and https_proxy env variables in /etc/sysconfig/docker (redhat/centos) or /etc/default/docker (debian)

no_proxy

Will set the no_proxy variable in /etc/sysconfig/docker (redhat/centos) or /etc/default/docker (debian)

storage_driver

Specify a storage driver to use Default is undef: let docker choose the correct one Valid values: aufs, devicemapper, btrfs, overlayfs, vfs

dm_basesize

The size to use when creating the base device, which limits the size of images and containers. Default value is 10G

dm_fs

The filesystem to use for the base image (xfs or ext4) Defaults to ext4

dm_mkfsarg

Specifies extra mkfs arguments to be used when creating the base device.

dm_mountopt

Specifies extra mount options used when mounting the thin devices.

dm_blocksize

A custom blocksize to use for the thin pool. Default blocksize is 64K. Warning: _DO NOT_ change this parameter after the lvm devices have been initialized.

dm_loopdatasize

Specifies the size to use when creating the loopback file for the “data” device which is used for the thin pool Default size is 100G

dm_loopmetadatasize

Specifies the size to use when creating the loopback file for the “metadata” device which is used for the thin pool Default size is 2G

dm_datadev

A custom blockdevice to use for data for the thin pool.

dm_metadatadev

A custom blockdevice to use for metadata for the thin pool.

manage_package

Won’t install or define the docker package, useful if you want to use your own package Defaults to true

package_name

Specify custom package name Default is set on a per system basis in docker::params

service_name

Specify custom service name Default is set on a per system basis in docker::params

docker_command

Specify a custom docker command name Default is set on a per system basis in docker::params

docker_users

Specify an array of users to add to the docker group Default is empty

repo_opt

Specify a string to pass as repository options (RedHat only)

Parameters:

  • version (Any) (defaults to: $docker::params::version)
  • ensure (Any) (defaults to: $docker::params::ensure)
  • prerequired_packages (Any) (defaults to: $docker::params::prerequired_packages)
  • tcp_bind (Any) (defaults to: $docker::params::tcp_bind)
  • socket_bind (Any) (defaults to: $docker::params::socket_bind)
  • log_level (Any) (defaults to: $docker::params::log_level)
  • selinux_enabled (Any) (defaults to: $docker::params::selinux_enabled)
  • use_upstream_package_source (Any) (defaults to: $docker::params::use_upstream_package_source)
  • package_source_location (Any) (defaults to: $docker::params::package_source_location)
  • service_state (Any) (defaults to: $docker::params::service_state)
  • service_enable (Any) (defaults to: $docker::params::service_enable)
  • root_dir (Any) (defaults to: $docker::params::root_dir)
  • tmp_dir (Any) (defaults to: $docker::params::tmp_dir)
  • manage_kernel (Any) (defaults to: $docker::params::manage_kernel)
  • dns (Any) (defaults to: $docker::params::dns)
  • dns_search (Any) (defaults to: $docker::params::dns_search)
  • socket_group (Any) (defaults to: $docker::params::socket_group)
  • extra_parameters (Any) (defaults to: undef)
  • shell_values (Any) (defaults to: undef)
  • proxy (Any) (defaults to: $docker::params::proxy)
  • no_proxy (Any) (defaults to: $docker::params::no_proxy)
  • storage_driver (Any) (defaults to: $docker::params::storage_driver)
  • dm_basesize (Any) (defaults to: $docker::params::dm_basesize)
  • dm_fs (Any) (defaults to: $docker::params::dm_fs)
  • dm_mkfsarg (Any) (defaults to: $docker::params::dm_mkfsarg)
  • dm_mountopt (Any) (defaults to: $docker::params::dm_mountopt)
  • dm_blocksize (Any) (defaults to: $docker::params::dm_blocksize)
  • dm_loopdatasize (Any) (defaults to: $docker::params::dm_loopdatasize)
  • dm_loopmetadatasize (Any) (defaults to: $docker::params::dm_loopmetadatasize)
  • dm_datadev (Any) (defaults to: $docker::params::dm_datadev)
  • dm_metadatadev (Any) (defaults to: $docker::params::dm_metadatadev)
  • execdriver (Any) (defaults to: $docker::params::execdriver)
  • manage_package (Any) (defaults to: $docker::params::manage_package)
  • manage_epel (Any) (defaults to: $docker::params::manage_epel)
  • package_name (Any) (defaults to: $docker::params::package_name)
  • service_name (Any) (defaults to: $docker::params::service_name)
  • docker_command (Any) (defaults to: $docker::params::docker_command)
  • docker_users (Any) (defaults to: [])
  • repo_opt (Any) (defaults to: $docker::params::repo_opt)
  • nowarn_kernel (Any) (defaults to: $docker::params::nowarn_kernel)


149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# File 'manifests/init.pp', line 149

class docker(
  $version                     = $docker::params::version,
  $ensure                      = $docker::params::ensure,
  $prerequired_packages        = $docker::params::prerequired_packages,
  $tcp_bind                    = $docker::params::tcp_bind,
  $socket_bind                 = $docker::params::socket_bind,
  $log_level                   = $docker::params::log_level,
  $selinux_enabled             = $docker::params::selinux_enabled,
  $use_upstream_package_source = $docker::params::use_upstream_package_source,
  $package_source_location     = $docker::params::package_source_location,
  $service_state               = $docker::params::service_state,
  $service_enable              = $docker::params::service_enable,
  $root_dir                    = $docker::params::root_dir,
  $tmp_dir                     = $docker::params::tmp_dir,
  $manage_kernel               = $docker::params::manage_kernel,
  $dns                         = $docker::params::dns,
  $dns_search                  = $docker::params::dns_search,
  $socket_group                = $docker::params::socket_group,
  $extra_parameters            = undef,
  $shell_values                = undef,
  $proxy                       = $docker::params::proxy,
  $no_proxy                    = $docker::params::no_proxy,
  $storage_driver              = $docker::params::storage_driver,
  $dm_basesize                 = $docker::params::dm_basesize,
  $dm_fs                       = $docker::params::dm_fs,
  $dm_mkfsarg                  = $docker::params::dm_mkfsarg,
  $dm_mountopt                 = $docker::params::dm_mountopt,
  $dm_blocksize                = $docker::params::dm_blocksize,
  $dm_loopdatasize             = $docker::params::dm_loopdatasize,
  $dm_loopmetadatasize         = $docker::params::dm_loopmetadatasize,
  $dm_datadev                  = $docker::params::dm_datadev,
  $dm_metadatadev              = $docker::params::dm_metadatadev,
  $execdriver                  = $docker::params::execdriver,
  $manage_package              = $docker::params::manage_package,
  $manage_epel                 = $docker::params::manage_epel,
  $package_name                = $docker::params::package_name,
  $service_name                = $docker::params::service_name,
  $docker_command              = $docker::params::docker_command,
  $docker_users                = [],
  $repo_opt                    = $docker::params::repo_opt,
  $nowarn_kernel               = $docker::params::nowarn_kernel,
) inherits docker::params {

  validate_string($version)
  validate_re($::osfamily, '^(Debian|RedHat|Archlinux)$', 'This module only works on Debian and Red Hat based systems.')
  validate_bool($manage_kernel)
  validate_bool($manage_package)
  validate_array($docker_users)

  if $log_level {
    validate_re($log_level, '^(debug|info|warn|error|fatal)$', 'log_level must be one of debug, info, warn, error or fatal')
  }

  if $selinux_enabled {
    validate_re($selinux_enabled, '^(true|false)$', 'selinux_enabled must be true or false')
  }

  if $storage_driver {
    validate_re($storage_driver, '^(aufs|devicemapper|btrfs|overlay|vfs)$', 'Valid values for storage_driver are aufs, devicemapper, btrfs, overlayfs, vfs.' )
  }

  if $dm_fs {
    validate_re($dm_fs, '^(ext4|xfs)$', '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 and !$dm_metadatadev) or (!$dm_datadev and $dm_metadatadev) {
    fail('You need to provide both $dm_datadev and $dm_metadatadev parameters for direct lvm.')
  }

  class { 'docker::install': } ->
  class { 'docker::config': } ~>
  class { 'docker::service': }
  contain 'docker::install'
  contain 'docker::config'
  contain 'docker::service'

  # Only bother trying extra docker stuff after docker has been installed,
  # and is running.
  Class['docker'] -> Docker::Registry <||> -> Docker::Run <||>
  Class['docker'] -> Docker::Image <||>

}