Puppet Class: docker::service

Defined in:
manifests/service.pp

Overview

Class: docker::service

Class to manage the docker service daemon

Parameters

tcp_bind

Which tcp port, if any, to bind the docker service to.

socket_bind

Which local unix socket to bind the docker service to.

socket_group

Which local unix socket to bind the docker service to.

root_dir

Specify a non-standard root directory for docker.

extra_parameters

Plain additional parameters to pass to the docker daemon

shell_values

Array of shell values to pass into init script config files

Parameters:

  • docker_command (Any) (defaults to: $docker::docker_command)
  • service_name (Any) (defaults to: $docker::service_name)
  • tcp_bind (Any) (defaults to: $docker::tcp_bind)
  • socket_bind (Any) (defaults to: $docker::socket_bind)
  • log_level (Any) (defaults to: $docker::log_level)
  • selinux_enabled (Any) (defaults to: $docker::selinux_enabled)
  • socket_group (Any) (defaults to: $docker::socket_group)
  • dns (Any) (defaults to: $docker::dns)
  • dns_search (Any) (defaults to: $docker::dns_search)
  • service_state (Any) (defaults to: $docker::service_state)
  • service_enable (Any) (defaults to: $docker::service_enable)
  • root_dir (Any) (defaults to: $docker::root_dir)
  • extra_parameters (Any) (defaults to: $docker::extra_parameters)
  • shell_values (Any) (defaults to: $docker::shell_values)
  • proxy (Any) (defaults to: $docker::proxy)
  • no_proxy (Any) (defaults to: $docker::no_proxy)
  • execdriver (Any) (defaults to: $docker::execdriver)
  • storage_driver (Any) (defaults to: $docker::storage_driver)
  • tmp_dir (Any) (defaults to: $docker::tmp_dir)
  • nowarn_kernel (Any) (defaults to: $docker::nowarn_kernel)


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'manifests/service.pp', line 24

class docker::service (
  $docker_command   = $docker::docker_command,
  $service_name     = $docker::service_name,
  $tcp_bind         = $docker::tcp_bind,
  $socket_bind      = $docker::socket_bind,
  $log_level        = $docker::log_level,
  $selinux_enabled  = $docker::selinux_enabled,
  $socket_group     = $docker::socket_group,
  $dns              = $docker::dns,
  $dns_search       = $docker::dns_search,
  $service_state    = $docker::service_state,
  $service_enable   = $docker::service_enable,
  $root_dir         = $docker::root_dir,
  $extra_parameters = $docker::extra_parameters,
  $shell_values     = $docker::shell_values,
  $proxy            = $docker::proxy,
  $no_proxy         = $docker::no_proxy,
  $execdriver       = $docker::execdriver,
  $storage_driver   = $docker::storage_driver,
  $tmp_dir          = $docker::tmp_dir,
  $nowarn_kernel    = $docker::nowarn_kernel,
) {
  $dns_array = any2array($dns)
  $dns_search_array = any2array($dns_search)
  $extra_parameters_array = any2array($extra_parameters)
  $shell_values_array = any2array($shell_values)

  case $::osfamily {
    'Debian': {
      $hasstatus     = true
      $hasrestart    = false

      case $::operatingsystem {
        'Debian': {
          # Do nothing as Debian doesn't have Upstart
        }
        default: {
          file { '/etc/init.d/docker':
              ensure => 'link',
              target => '/lib/init/upstart-job',
              force  => true,
              notify => Service['docker'],
          }
        }
      }

      file { "/etc/default/${service_name}":
        ensure  => present,
        force   => true,
        content => template('docker/etc/default/docker.erb'),
        notify  => Service['docker'],
      }
    }
    'RedHat': {
      if ($::operatingsystem == 'Fedora') or (versioncmp($::operatingsystemrelease, '7.0') >= 0) {
        $template = 'docker.rhel7.erb'
      } else {
        $template = 'docker.erb'
      }
      $hasstatus     = undef
      $hasrestart    = undef

      file { '/etc/sysconfig/docker':
        ensure  => present,
        force   => true,
        content => template("docker/etc/sysconfig/${template}"),
        notify  => Service['docker'],
      }

      file { '/etc/sysconfig/docker-storage':
        ensure  => present,
        force   => true,
        content => template('docker/etc/sysconfig/docker-storage.erb'),
        notify  => Service['docker'],
      }
    }
    'Archlinux': {
      $hasstatus  = true
      $hasrestart = true

      file {
        '/etc/systemd/system/docker.service.d':
          ensure => directory;

        '/etc/systemd/system/docker.service.d/service-overrides.conf':
          ensure => present,
          source => 'puppet:///modules/docker/service-overrides-archlinux.conf',
          notify => Exec['docker-systemd-reload'];

        '/etc/conf.d/docker':
          ensure  => present,
          force   => true,
          content => template('docker/etc/conf.d/docker.erb'),
          notify  => Service['docker'];
      }
    }
    default: {
      fail('Docker needs a Debian, RedHat or Archlinux based system.')
    }
  }

  $provider = $::operatingsystem ? {
    'Ubuntu' => 'upstart',
    default  => undef,
  }

  service { 'docker':
    ensure     => $service_state,
    name       => $service_name,
    enable     => $service_enable,
    hasstatus  => $hasstatus,
    hasrestart => $hasrestart,
    provider   => $provider,
  }

}