Gitlab Community Edition Instance

Skip to content
Snippets Groups Projects
docker.pp 3.15 KiB
Newer Older
# Installs Docker repository, docker-ce, docker-compose
class ubuntu_server::docker($docker_compose_latest_version='1.18.0',$ensure_running=true,$live_restore=false,$docker_daemon_config='ubuntu_server/etc/docker/daemon.json.erb') {
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    File{
        owner => 'root',
        group => 'root',
        mode => '0644',
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

    Exec{
        path => $::path,
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

    if versioncmp($::operatingsystemrelease, '18.04') < 0 {
        exec{'docker-apt-repo':
            command => 'wget -O - https://download.docker.com/linux/ubuntu/gpg | apt-key add -',
            unless  => 'apt-key list | grep -q "4096R/0EBFCD88"',
            notify  => Exec['apt-get-update'],
        }
    else {
        exec{'docker-apt-repo':
            command => 'wget -O - https://download.docker.com/linux/ubuntu/gpg | apt-key add -',
            unless  => 'apt-key fingerprint 0EBFCD88 | grep -q -F "9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88"',
            notify  => Exec['apt-get-update'],
        }
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

Benedikt Wegmann's avatar
Benedikt Wegmann committed
    exec{'apt-get-update':
        command     => 'apt-get update',
        refreshonly => true,
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

    file{'/etc/docker/':
        ensure => directory,
        mode   => '0700',
    }
    file{'/etc/docker/daemon.json':
        ensure  => present,
        content => template($docker_daemon_config),
        before  => Package['docker-ce']
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    file{'/etc/apt/sources.list.d/docker.list':
        ensure  => present,
        content => "deb [arch=${::architecture}] http://download.docker.com/linux/ubuntu ${::lsbdistcodename} stable",
        notify  => Exec['apt-get-update'],
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

    package{['lxc-docker','docker','docker-engine','docker.io']:
Benedikt Wegmann's avatar
Benedikt Wegmann committed
        ensure => purged,
        before => Package['docker-ce'],
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

    if $::docker_live_restore == true {
        package{'docker-ce':
            ensure  => latest,
            require => [Exec['docker-apt-repo'],File['/etc/apt/sources.list.d/docker.list'],Exec['apt-get-update']],
        } ~> Service['docker']
    } else {
        package{'docker-ce':
            ensure  => present,
            require => [Exec['docker-apt-repo'],File['/etc/apt/sources.list.d/docker.list'],Exec['apt-get-update']],
        }
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

    if $ensure_running == true {
        service{'docker':
            ensure  => running,
            require => Package['docker-ce'],
        }
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }

    if $::docker_compose_version == undef {
        $docker_compose_version = '0'
    }
    else {
        $docker_compose_version = $::docker_compose_version
    if versioncmp($docker_compose_latest_version,$docker_compose_version) > 0 {
        exec{'docker-compose':
            command => "curl -L https://github.com/docker/compose/releases/download/${docker_compose_latest_version}/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose",
        }
Benedikt Wegmann's avatar
Benedikt Wegmann committed

        exec{'docker-compose-bash-completion':
            command => "curl -L https://raw.githubusercontent.com/docker/compose/${docker_compose_latest_version}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose",
        }
        file{'/usr/local/bin/docker-compose':
            require => Exec['docker-compose'],
        }
Benedikt Wegmann's avatar
Benedikt Wegmann committed
    }
}