Puppet Class: dockerinstall::config

Defined in:
manifests/config.pp

Summary

Docker config setup (daemon.json)

Overview

Docker config setup (daemon.json)

Examples:

include dockerinstall::config

Parameters:

  • selinux (Optional[Boolean]) (defaults to: undef)

    Whether to enable selinux support

  • manage_users (Boolean) (defaults to: $dockerinstall::manage_os_users)
  • docker_users (Dockerinstall::UserList) (defaults to: $dockerinstall::docker_users)
  • group (String) (defaults to: $dockerinstall::docker_group)
  • manage_package (Boolean) (defaults to: $dockerinstall::manage_package)
  • bip (Optional[Stdlib::IP::Address::V4::CIDR]) (defaults to: undef)
  • mtu (Optional[Integer]) (defaults to: undef)
  • storage_driver (Optional[Dockerinstall::StorageDriver]) (defaults to: undef)
  • storage_opts (Optional[ Array[Dockerinstall::StorageOptions] ]) (defaults to: undef)
  • cgroup_driver (Optional[Dockerinstall::CgroupDriver]) (defaults to: undef)
  • log_driver (Optional[Dockerinstall::LogDriver]) (defaults to: undef)
  • log_opts (Optional[Dockerinstall::Log::JSONFile]) (defaults to: undef)
  • user_ensure (String) (defaults to: 'present')
  • group_ensure (String) (defaults to: 'present')
  • config_ensure (String) (defaults to: 'file')
  • system_user (Boolean) (defaults to: true)
  • system_group (Boolean) (defaults to: true)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
# File 'manifests/config.pp', line 10

class dockerinstall::config (
    Boolean $manage_users      = $dockerinstall::manage_os_users,
    Dockerinstall::UserList
            $docker_users      = $dockerinstall::docker_users,
    String  $group             = $dockerinstall::docker_group,
    Boolean $manage_package    = $dockerinstall::manage_package,
    # https://github.com/puppetlabs/puppetlabs-stdlib#stdlibipaddressv4cidr
    Optional[Stdlib::IP::Address::V4::CIDR]
            $bip               = undef,
    Optional[Integer]
            $mtu               = undef,
    Optional[Boolean]
            $selinux           = undef,
    Optional[Dockerinstall::StorageDriver]
            $storage_driver    = undef,
    Optional[
      Array[Dockerinstall::StorageOptions]
    ]       $storage_opts      = undef,
    Optional[Dockerinstall::CgroupDriver]
            $cgroup_driver     = undef,
    Optional[Dockerinstall::LogDriver]
            $log_driver        = undef,
    Optional[Dockerinstall::Log::JSONFile]
            $log_opts          = undef,
    String  $user_ensure       = 'present',
    String  $group_ensure      = 'present',
    String  $config_ensure     = 'file',
    Boolean $system_user       = true,
    Boolean $system_group      = true,
)
{
    include dockerinstall::install

    if $manage_users {
        group { 'docker':
            ensure => $group_ensure,
            name   => $group,
            system => $system_group,
        }

        $docker_users_list = $docker_users ? {
          Array   => $docker_users,
          default => [$docker_users]
        }
        $users = $docker_users_list - ['docker']

        user {
            default:
              ensure     => $user_ensure,
              groups     => [ $group ],
              membership => 'minimum',
            ;
            $users:
              tag => 'docker',
            ;
            'docker':
              system => $system_user,
            ;
        }

        if $user_ensure == 'present' {
          Class['dockerinstall::install']
            -> Group['docker']
            -> User['docker']
        }
        else {
          User['docker'] -> Group['docker']
        }
    }

    # TLS
    # https://docs.docker.com/engine/security/https/

    if $cgroup_driver {
      $exec_opts = ["native.cgroupdriver=${cgroup_driver}"]
    }
    else {
      $exec_opts = undef
    }

    $daemon_config = {} +
      dockerinstall::option('bip', $bip) +
      dockerinstall::option('mtu', $mtu) +
      dockerinstall::option('storage-driver', $storage_driver) +
      dockerinstall::option('exec-opts', $exec_opts) +
      dockerinstall::option('log-driver', $log_driver) +
      dockerinstall::option('log-opts', $log_opts) +
      dockerinstall::option('storage-opts', $storage_opts) +
      dockerinstall::option('selinux-enabled', $selinux)

    file { '/etc/docker/daemon.json':
      ensure  => $config_ensure,
      content => template('dockerinstall/daemon.json.erb'),
    }
}