Puppet Class: dockerinstall::install

Defined in:
manifests/install.pp

Summary

Docker daemon installation from package repository.

Overview

Docker daemon installation from package repository.

Examples:

include dockerinstall::install

Parameters:

  • package_name (Dockerinstall::PackageName) (defaults to: $dockerinstall::package_name)
  • version (Dockerinstall::Version) (defaults to: $dockerinstall::version)
  • manage_package (Boolean) (defaults to: $dockerinstall::manage_package)
  • prerequired_packages (Array[String]) (defaults to: $dockerinstall::prerequired_packages)
  • prerequired_ensure (String) (defaults to: 'installed')
  • containerd_package_name (String) (defaults to: $dockerinstall::containerd_package_name)
  • containerd_version (String) (defaults to: $dockerinstall::containerd_version)
  • manage_cli (Boolean) (defaults to: $dockerinstall::manage_cli)
  • cli_package_name (String) (defaults to: $dockerinstall::cli_package_name)


7
8
9
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
# File 'manifests/install.pp', line 7

class dockerinstall::install (
    Dockerinstall::PackageName
            $package_name            = $dockerinstall::package_name,
    Dockerinstall::Version
            $version                 = $dockerinstall::version,
    Boolean $manage_package          = $dockerinstall::manage_package,
    Array[String]
            $prerequired_packages    = $dockerinstall::prerequired_packages,
    String  $prerequired_ensure      = 'installed',
    String  $containerd_package_name = $dockerinstall::containerd_package_name,
    String  $containerd_version      = $dockerinstall::containerd_version,
    Boolean $manage_cli              = $dockerinstall::manage_cli,
    String  $cli_package_name        = $dockerinstall::cli_package_name,
)
{
  include dockerinstall::setup
  include dockerinstall::repos::update

  if $manage_package {
    include dockerinstall::repos

    # The Docker daemon relies on a OCI compliant runtime (invoked via the
    # containerd daemon) as its interface to the Linux kernel namespaces,
    # cgroups, and SELinux.
    # By default, the Docker daemon automatically starts containerd
    if $containerd_version == 'absent' {
      $docker_version = 'absent'
      Package['docker'] -> Package['containerd.io']
    }
    else {
      $docker_version = $version
    }

    # exclude docker and conteinerd.io from list of additional packages
    $managed_packages = $prerequired_packages - [ $package_name, $containerd_package_name, 'docker', 'containerd.io']
    $managed_packages.each |String $reqp| {
      package { $reqp:
        ensure => $prerequired_ensure,
        before => Package['docker'],
      }
    }

    package { 'docker':
      ensure => $docker_version,
      name   => $package_name,
    }

    if $manage_cli and $cli_package_name {
      package { 'docker-cli':
        ensure => $docker_version,
        name   => $cli_package_name,
      }

      Package['docker'] -> Package['docker-cli']
    }

    package { 'containerd.io':
      ensure => $containerd_version,
      name   => $containerd_package_name,
    }

    Class['dockerinstall::repos'] ~> Class['dockerinstall::repos::update']
    Class['dockerinstall::repos'] -> Package['docker']
    Class['dockerinstall::repos'] -> Package['containerd.io']

    Class['dockerinstall::repos::update'] -> Package['docker']
    Class['dockerinstall::repos::update'] -> Package['containerd.io']
  }
}