OSDN Git Service

adds OS distributed Docker Engine package support.
[metasearch/grid-chef-repo.git] / cookbooks / docker-grid / attributes / default.rb
1 #
2 # Cookbook Name:: docker-grid
3 # Attributes:: default
4 #
5 # Copyright 2016-2017, whitestar
6 #
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
10 #
11 #     http://www.apache.org/licenses/LICENSE-2.0
12 #
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 #
19
20 default['docker-grid']['install_flavor'] = 'dockerproject'  # or 'os-repository'
21 default['docker-grid']['apt_repo'] = {
22   'url' => 'https://apt.dockerproject.org/repo',
23   'keyserver' => 'hkp://p80.pool.sks-keyservers.net:80',
24   'recv-keys' => '58118E89F3A912897C070ADBF76221572C52609D',
25   'override_apt_line' => '',  # e.g. 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
26 }
27 default['docker-grid']['yum_repo'] = {
28   'baseurl' => 'https://yum.dockerproject.org/repo/main/centos/$releasever/',
29   'gpgcheck' => '1',
30   'gpgkey' => 'https://yum.dockerproject.org/gpg',
31 }
32
33 # dockerproject: direct download.
34 # Note: non-support by this cookbook.
35 #   os-repository (Ubuntu): http://packages.ubuntu.com/search?keywords=docker-compose&searchon=names
36 #   os-repository (CentOS): none.
37 default['docker-grid']['compose']['auto_upgrade'] = false
38 default['docker-grid']['compose']['release_base_url'] = 'https://github.com/docker/compose/releases/download/1.9.0'
39 default['docker-grid']['compose']['release_url'] = "#{node['docker-grid']['compose']['release_base_url']}/docker-compose-#{node['kernel']['name']}-#{node['kernel']['machine']}"
40 default['docker-grid']['compose']['home_dir'] = '/opt/docker-compose'
41 default['docker-grid']['compose']['app_dir'] = "#{node['docker-grid']['compose']['home_dir']}/app"
42
43 # dockerproject: 1.13.0-1, 1.12.3-1, 1.11.2-1, 1.10.3-1
44 # os-repository: yum list docker
45 #   http://mirror.centos.org/centos/7.3.1611/extras/x86_64/Packages/
46 default['docker-grid']['engine']['version_on_centos'] = '1.11.2-1'
47 # dockerproject: 1.13.0-0, 1.12.6-0, 1.11.2-0
48 # os-repository: http://packages.ubuntu.com/search?keywords=docker.io&searchon=names
49 default['docker-grid']['engine']['version_on_ubuntu'] = '1.11.2-0'
50
51 case node['platform']
52 when 'centos', 'redhat'
53   version_on_centos = "#{node['docker-grid']['engine']['version_on_centos']}.el#{node['platform_version'].to_i}.#{node['platform']}"
54 when 'ubuntu'
55   version_on_ubuntu = \
56     if node['docker-grid']['install_flavor'] == 'dockerproject'
57       if Gem::Version.create(node['docker-grid']['engine']['version_on_ubuntu']) >= Gem::Version.create('1.12.4-0')
58         "#{node['docker-grid']['engine']['version_on_ubuntu']}~ubuntu-#{node['lsb']['codename']}"
59       else
60         "#{node['docker-grid']['engine']['version_on_ubuntu']}~#{node['lsb']['codename']}"
61       end
62     else
63       # e.g. 1.12.3-0ubuntu4~16.10.2, 1.12.3-0ubuntu4~16.04.2
64       node['docker-grid']['engine']['version_on_ubuntu']
65     end
66 end
67
68 default['docker-grid']['engine']['version'] = node.value_for_platform(
69   ['centos', 'redhat'] => {
70     'default' => version_on_centos,
71   },
72   'ubuntu' => {
73     'default' => version_on_ubuntu,
74   }
75 )
76 # overlay2: Docker >= 1.12, Kernel >= 4.0
77 default['docker-grid']['engine']['storage-driver_on_centos'] = 'overlay'
78 default['docker-grid']['engine']['storage-driver_on_ubuntu'] = 'aufs'
79 default['docker-grid']['engine']['storage-driver'] = node.value_for_platform(
80   ['centos', 'redhat'] => {
81     'default' => node['docker-grid']['engine']['storage-driver_on_centos'],
82   },
83   'ubuntu' => {
84     'default' => node['docker-grid']['engine']['storage-driver_on_ubuntu'],
85   }
86 )
87 default['docker-grid']['engine']['userns-remap'] = nil  # default: inactive
88 # CentOS default: '--selinux-enabled --log-driver=journald --signature-verification=false'
89 default['docker-grid']['engine']['daemon_extra_options'] = '-H fd://'
90 default['docker-grid']['engine']['users_allow'] = []
91
92 # dockerproject: container image from https://hub.docker.com/
93 # Note: non-support by this cookbook.
94 #   os-repository (Ubuntu): http://packages.ubuntu.com/search?keywords=docker-registry&searchon=names
95 #   os-repository (CentOS): http://mirror.centos.org/centos/7.3.1611/extras/x86_64/Packages/
96 default['docker-grid']['registry']['with_ssl_cert_cookbook'] = false
97 # If node['docker-grid']['registry']['with_ssl_cert_cookbook'] is true,
98 # node['docker-grid']['registry']['docker-compose']['config']
99 # are overridden by the following 'ca_name' and 'common_name' attributes.
100 #default['docker-grid']['registry']['ssl_cert']['ca_name'] = nil
101 default['docker-grid']['registry']['ssl_cert']['common_name'] = node['fqdn']
102 default['docker-grid']['registry']['docker-compose']['app_dir'] = "#{node['docker-grid']['compose']['app_dir']}/registry"
103 # ./docker-compose.yml
104 default['docker-grid']['registry']['docker-compose']['config_format_version'] = '1'
105 default['docker-grid']['registry']['docker-compose']['service_name'] = 'registry'
106 default['docker-grid']['registry']['docker-compose']['host_data_volume'] = '/var/lib/docker-registry'
107 service_name = node['docker-grid']['registry']['docker-compose']['service_name']
108 version_1_config = {
109   # Version 1 docker-compose format
110   service_name => {
111     'restart' => 'always',
112     'image' => 'registry:2',
113     #'ports' => [
114     #  '5000:5000',
115     #],
116     #'environment' => {
117     #  'REGISTRY_HTTP_TLS_CERTIFICATE' => '/certs/domain.crt',
118     #  'REGISTRY_HTTP_TLS_KEY' =>         '/certs/domain.key',
119     #  'REGISTRY_AUTH' =>                'htpasswd',
120     #  'REGISTRY_AUTH_HTPASSWD_PATH' =>  '/auth/htpasswd',
121     #  'REGISTRY_AUTH_HTPASSWD_REALM' => 'Registry Realm',
122     #},
123     #'volumes' => [
124     #  #'./etc/config.yml:/etc/docker/registry/config.yml',  # Overriding the entire configuration file
125     #  "#{node['docker-grid']['registry']['docker-compose']['data_volume']}:/var/lib/registry",
126     #  '/path/certs:/certs',
127     #  '/path/auth:/auth',
128     #],
129   },
130 }
131 version_2_config = {
132   # Version 2 docker-compose format
133   'version' => '2',
134   'services' => version_1_config,
135 }
136 default['docker-grid']['registry']['docker-compose']['config'] = \
137   node['docker-grid']['registry']['docker-compose']['config_format_version'] == '2' ? version_2_config : version_1_config
138 # ./etc/config.yml
139 # See: https://docs.docker.com/registry/configuration/#/overriding-the-entire-configuration-file
140 default['docker-grid']['registry']['docker-compose']['registry-config'] = nil