# Cookbook Name:: docker-grid
# Attributes:: default
#
-# Copyright 2016-2017, whitestar
+# Copyright 2016-2018, whitestar
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# limitations under the License.
#
+::Chef::Node::Attribute.send(:include, DockerGrid::Helper)
+
+platform = node['platform']
+
default['docker-grid']['install_flavor'] = 'dockerproject' # or 'os-repository'
-default['docker-grid']['dockerproject']['package_name'] = 'docker-engine'
+default['docker-grid']['dockerproject']['enable_new_repo'] = true
+# read only
+force_override['docker-grid']['dockerproject']['apt_new_repo_url'] = "https://download.docker.com/linux/#{platform}"
+force_override['docker-grid']['dockerproject']['apt_old_repo_url'] = 'https://apt.dockerproject.org/repo'
+# e.g. 'stable edge', 'edge test',...
+default['docker-grid']['dockerproject']['apt_new_repo_sections'] = 'stable'
+default['docker-grid']['dockerproject']['package_name'] \
+ = node['docker-grid']['dockerproject']['enable_new_repo'] ? 'docker-ce' : 'docker-engine'
+apt_repo_url = \
+ if node['docker-grid']['dockerproject']['enable_new_repo']
+ node['docker-grid']['dockerproject']['apt_new_repo_url']
+ else
+ node['docker-grid']['dockerproject']['apt_old_repo_url']
+ end
default['docker-grid']['apt_repo'] = {
- 'url' => 'https://apt.dockerproject.org/repo',
+ 'url' => apt_repo_url,
+ 'override_apt_line' => '', # e.g. 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
+ # for old repository
'keyserver' => 'hkp://p80.pool.sks-keyservers.net:80',
'recv-keys' => '58118E89F3A912897C070ADBF76221572C52609D',
- 'override_apt_line' => '', # e.g. 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
}
+# e.g. 'docker-ce-edge,docker-ce-test'
+default['docker-grid']['dockerproject']['yum_new_repo_extra_enablerepo'] = ''
+# Old yum repository
default['docker-grid']['yum_repo'] = {
'baseurl' => 'https://yum.dockerproject.org/repo/main/centos/$releasever/',
'gpgcheck' => '1',
# os-repository (Ubuntu): http://packages.ubuntu.com/search?keywords=docker-compose&searchon=names
# os-repository (CentOS): none.
default['docker-grid']['compose']['auto_upgrade'] = false
-default['docker-grid']['compose']['release_base_url'] = 'https://github.com/docker/compose/releases/download/1.9.0'
+# latest: 'https://github.com/docker/compose/releases/download/1.22.0'
+default['docker-grid']['compose']['version'] = '1.21.2'
+default['docker-grid']['compose']['release_base_url'] = "https://github.com/docker/compose/releases/download/#{node['docker-grid']['compose']['version']}"
default['docker-grid']['compose']['release_url'] = "#{node['docker-grid']['compose']['release_base_url']}/docker-compose-#{node['kernel']['name']}-#{node['kernel']['machine']}"
default['docker-grid']['compose']['home_dir'] = '/opt/docker-compose'
default['docker-grid']['compose']['app_dir'] = "#{node['docker-grid']['compose']['home_dir']}/app"
+default['docker-grid']['dind-compose']['app_dir'] = "#{node['docker-grid']['compose']['app_dir']}/docker-in-docker"
+default['docker-grid']['dind-compose']['data_dir'] = "#{node['docker-grid']['dind-compose']['app_dir']}/data"
+default['docker-grid']['dind-compose']['config'] = {
+ # Version 2 docker-compose format
+ 'version' => '2',
+ 'services' => {
+ 'dind' => {
+ 'image' => 'docker:stable-dind',
+ 'privileged' => true,
+ 'command' => [
+ #'--storage-driver=overlay2', # same as host Docker's storage driver
+ ],
+ 'volumes' => [
+ # These volumes will be set by the docker-grid::dind-compose recipe automatically.
+ #"#{node['docker-grid']['dind-compose']['data_dir']}:/var/lib/docker",
+ ],
+ 'environment' => {
+ },
+ },
+ },
+}
+
default['docker-grid']['engine']['skip_setup'] = false
-# dockerproject: 17.03.1.ce-1, 1.13.1-1, 1.12.6-1, 1.11.2-1, 1.10.3-1
+default['docker-grid']['engine']['autopilot'] = {
+ 'enabled' => false,
+ 'log_dir' => '/var/log',
+ 'containers_prune_period' => '5 */4 * * *',
+ 'images_prune_period' => '10 */4 * * *',
+ 'volumes_prune_period' => '15 */4 * * *',
+}
+
+# dockerproject: 18.06.0.ce-3, 18.03.1.ce-1, 17.12.1.ce-1, 1.13.1-1
# os-repository: yum list docker
# http://mirror.centos.org/centos/7.3.1611/extras/x86_64/Packages/
-default['docker-grid']['engine']['version_on_centos'] = '1.11.2-1'
-# dockerproject: 17.03.1~ce-0, 1.13.1-0, 1.12.6-0, 1.11.2-0
-default['docker-grid']['engine']['version_on_debian'] = '17.03.1~ce-0'
+default['docker-grid']['engine']['version_on_centos'] = '17.12.1.ce-1'
+# dockerproject: 5:18.09.0~3-0, 18.06.1~ce~3-0, 18.03.1~ce-0, 17.12.1~ce-0, 1.13.1-0
+default['docker-grid']['engine']['version_on_debian'] = '17.12.1~ce-0'
+# dockerproject: 5:18.09.0~3-0, 18.06.1~ce~3-0, 18.03.1~ce-0, 17.12.1~ce-0
# os-repository: http://packages.ubuntu.com/search?keywords=docker.io&searchon=names
-default['docker-grid']['engine']['version_on_ubuntu'] = '1.11.2-0'
+default['docker-grid']['engine']['version_on_ubuntu'] = '17.12.1~ce-0'
-# '' (empty) version -> latest version
-case node['platform']
+# '' (empty) or 'latest' version -> latest version
+case platform
when 'centos', 'redhat'
version_on_centos = node['docker-grid']['engine']['version_on_centos']
- if !version_on_centos.nil? && !version_on_centos.empty?
- version_on_centos = "#{version_on_centos}.el#{node['platform_version'].to_i}.#{node['platform']}"
+ if !version_on_centos.nil? && !version_on_centos.empty? && version_on_centos != 'latest'
+ version_on_centos = docker_full_ver(node, version_on_centos)
end
when 'debian'
version_on_debian = node['docker-grid']['engine']['version_on_debian']
- if !version_on_debian.nil? && !version_on_debian.empty?
- version_on_debian = \
- if node['docker-grid']['install_flavor'] == 'dockerproject'
- if Gem::Version.create(version_on_debian.tr('~', '-')) >= Gem::Version.create('1.12.4-0')
- "#{version_on_debian}~debian-#{node['lsb']['codename']}"
- else
- "#{version_on_debian}~#{node['lsb']['codename']}"
- end
- end
+ if !version_on_debian.nil? && !version_on_debian.empty? && version_on_debian != 'latest' \
+ && node['docker-grid']['install_flavor'] == 'dockerproject'
+ version_on_debian = docker_full_ver(node, version_on_debian)
end
when 'ubuntu'
version_on_ubuntu = node['docker-grid']['engine']['version_on_ubuntu']
- if !version_on_ubuntu.nil? && !version_on_ubuntu.empty?
- version_on_ubuntu = \
- if node['docker-grid']['install_flavor'] == 'dockerproject'
- if Gem::Version.create(version_on_ubuntu.tr('~', '-')) >= Gem::Version.create('1.12.4-0')
- "#{version_on_ubuntu}~ubuntu-#{node['lsb']['codename']}"
- else
- "#{version_on_ubuntu}~#{node['lsb']['codename']}"
- end
- # else
- # e.g. 1.12.3-0ubuntu4~16.10.2, 1.12.3-0ubuntu4~16.04.2
- # version_on_ubuntu
- end
+ if !version_on_ubuntu.nil? && !version_on_ubuntu.empty? && version_on_ubuntu != 'latest' \
+ && node['docker-grid']['install_flavor'] == 'dockerproject'
+ version_on_ubuntu = docker_full_ver(node, version_on_ubuntu)
end
end
-# '' (empty) version -> latest version
+# '' (empty) or 'latest' version -> latest version
+# Note: if you would OVERRIDE the ['docker-grid']['engine']['version'] attribute ONCE,
+# the ['docker-grid']['engine']['version_on_*'] attributes are IGNORED.
default['docker-grid']['engine']['version'] = node.value_for_platform(
['centos', 'redhat'] => {
'default' => version_on_centos,
'default' => '/var/lib/docker-registry',
}
)
+default['docker-grid']['registry']['server']['autopilot'] = {
+ 'enabled' => false,
+ 'log_dir' => '/var/log',
+ 'wait_time' => '120s',
+}
default['docker-grid']['registry']['server']['config'] = {
'version' => '0.1',
'log' => {
},
},
}
+
+default['docker-grid']['registry']['docker-compose']['autopilot'] = {
+ 'enabled' => false,
+ 'log_dir' => '/var/log',
+ 'wait_time' => '180s',
+ 'docker-compose_opts' => '--no-ansi',
+}
default['docker-grid']['registry']['docker-compose']['app_dir'] = "#{node['docker-grid']['compose']['app_dir']}/registry"
# ./docker-compose.yml
default['docker-grid']['registry']['docker-compose']['config_format_version'] = '1'