OSDN Git Service

adds the `docker-grid::registry-server` and `docker-grid::registry-docker-compose...
[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']['dockerproject']['package_name'] = 'docker-engine'
22 default['docker-grid']['apt_repo'] = {
23   'url' => 'https://apt.dockerproject.org/repo',
24   'keyserver' => 'hkp://p80.pool.sks-keyservers.net:80',
25   'recv-keys' => '58118E89F3A912897C070ADBF76221572C52609D',
26   'override_apt_line' => '',  # e.g. 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
27 }
28 default['docker-grid']['yum_repo'] = {
29   'baseurl' => 'https://yum.dockerproject.org/repo/main/centos/$releasever/',
30   'gpgcheck' => '1',
31   'gpgkey' => 'https://yum.dockerproject.org/gpg',
32 }
33
34 default['docker-grid']['compose']['skip_setup'] = false
35 # dockerproject: direct download.
36 # Note: non-support by this cookbook.
37 #   os-repository (Ubuntu): http://packages.ubuntu.com/search?keywords=docker-compose&searchon=names
38 #   os-repository (CentOS): none.
39 default['docker-grid']['compose']['auto_upgrade'] = false
40 default['docker-grid']['compose']['release_base_url'] = 'https://github.com/docker/compose/releases/download/1.9.0'
41 default['docker-grid']['compose']['release_url'] = "#{node['docker-grid']['compose']['release_base_url']}/docker-compose-#{node['kernel']['name']}-#{node['kernel']['machine']}"
42 default['docker-grid']['compose']['home_dir'] = '/opt/docker-compose'
43 default['docker-grid']['compose']['app_dir'] = "#{node['docker-grid']['compose']['home_dir']}/app"
44
45 default['docker-grid']['engine']['skip_setup'] = false
46 # dockerproject: 17.03.1.ce-1, 1.13.1-1, 1.12.6-1, 1.11.2-1, 1.10.3-1
47 # os-repository: yum list docker
48 #   http://mirror.centos.org/centos/7.3.1611/extras/x86_64/Packages/
49 default['docker-grid']['engine']['version_on_centos'] = '1.11.2-1'
50 # dockerproject: 17.03.1~ce-0, 1.13.1-0, 1.12.6-0, 1.11.2-0
51 default['docker-grid']['engine']['version_on_debian'] = '17.03.1~ce-0'
52 # os-repository: http://packages.ubuntu.com/search?keywords=docker.io&searchon=names
53 default['docker-grid']['engine']['version_on_ubuntu'] = '1.11.2-0'
54
55 # '' (empty) version -> latest version
56 case node['platform']
57 when 'centos', 'redhat'
58   version_on_centos = node['docker-grid']['engine']['version_on_centos']
59   if !version_on_centos.nil? && !version_on_centos.empty?
60     version_on_centos = "#{version_on_centos}.el#{node['platform_version'].to_i}.#{node['platform']}"
61   end
62 when 'debian'
63   version_on_debian = node['docker-grid']['engine']['version_on_debian']
64   if !version_on_debian.nil? && !version_on_debian.empty?
65     version_on_debian = \
66       if node['docker-grid']['install_flavor'] == 'dockerproject'
67         if Gem::Version.create(version_on_debian.tr('~', '-')) >= Gem::Version.create('1.12.4-0')
68           "#{version_on_debian}~debian-#{node['lsb']['codename']}"
69         else
70           "#{version_on_debian}~#{node['lsb']['codename']}"
71         end
72       end
73   end
74 when 'ubuntu'
75   version_on_ubuntu = node['docker-grid']['engine']['version_on_ubuntu']
76   if !version_on_ubuntu.nil? && !version_on_ubuntu.empty?
77     version_on_ubuntu = \
78       if node['docker-grid']['install_flavor'] == 'dockerproject'
79         if Gem::Version.create(version_on_ubuntu.tr('~', '-')) >= Gem::Version.create('1.12.4-0')
80           "#{version_on_ubuntu}~ubuntu-#{node['lsb']['codename']}"
81         else
82           "#{version_on_ubuntu}~#{node['lsb']['codename']}"
83         end
84         # else
85         # e.g. 1.12.3-0ubuntu4~16.10.2, 1.12.3-0ubuntu4~16.04.2
86         # version_on_ubuntu
87       end
88   end
89 end
90
91 # '' (empty) version -> latest version
92 default['docker-grid']['engine']['version'] = node.value_for_platform(
93   ['centos', 'redhat'] => {
94     'default' => version_on_centos,
95   },
96   'debian' => {
97     'default' => version_on_debian,
98   },
99   'ubuntu' => {
100     'default' => version_on_ubuntu,
101   }
102 )
103 # overlay2: Docker >= 1.12, Kernel >= 4.0
104 default['docker-grid']['engine']['storage-driver_on_centos'] = 'overlay'
105 default['docker-grid']['engine']['storage-driver_on_debian'] = 'overlay2'
106 default['docker-grid']['engine']['storage-driver_on_ubuntu'] = 'aufs'
107 default['docker-grid']['engine']['storage-driver'] = node.value_for_platform(
108   ['centos', 'redhat'] => {
109     'default' => node['docker-grid']['engine']['storage-driver_on_centos'],
110   },
111   'debian' => {
112     'default' => node['docker-grid']['engine']['storage-driver_on_debian'],
113   },
114   'ubuntu' => {
115     'default' => node['docker-grid']['engine']['storage-driver_on_ubuntu'],
116   }
117 )
118 default['docker-grid']['engine']['userns-remap'] = nil  # default: inactive
119 # CentOS default: '--selinux-enabled --log-driver=journald --signature-verification=false'
120 default['docker-grid']['engine']['daemon_extra_options'] = '-H fd://'
121 default['docker-grid']['engine']['users_allow'] = []
122
123 # dockerproject: container image from https://hub.docker.com/
124 # Note: non-support by this cookbook.
125 #   os-repository (Ubuntu): http://packages.ubuntu.com/search?keywords=docker-registry&searchon=names
126 #   os-repository (CentOS): http://mirror.centos.org/centos/7.3.1611/extras/x86_64/Packages/
127 default['docker-grid']['registry']['with_ssl_cert_cookbook'] = false
128 # If node['docker-grid']['registry']['with_ssl_cert_cookbook'] is true,
129 # node['docker-grid']['registry']['docker-compose']['config']
130 # are overridden by the following 'ca_name' and 'common_name' attributes.
131 #default['docker-grid']['registry']['ssl_cert']['ca_name'] = nil
132 default['docker-grid']['registry']['ssl_cert']['common_name'] = node['fqdn']
133 # See https://docs.docker.com/registry/configuration/
134 rootdirectory = node.value_for_platform(
135   ['centos', 'redhat'] => {
136     'default' => '/var/lib/registry',
137   },
138   ['debian', 'ubuntu'] => {
139     'default' => '/var/lib/docker-registry',
140   }
141 )
142 default['docker-grid']['registry']['server']['config'] = {
143   'version' => '0.1',
144   'log' => {
145     'fields' => {
146       'service' => 'registry',
147     },
148   },
149   'storage' => {
150     'cache' => {
151       # NOTE: Formerly, blobdescriptor was known as layerinfo.
152       # While these are equivalent, layerinfo has been deprecated.
153       'blobdescriptor' => 'inmemory',
154     },
155     'filesystem' => {
156       'rootdirectory' => rootdirectory,
157     },
158   },
159   'http' => {
160     'addr' => ':5000',
161     'headers' => {
162       'X-Content-Type-Options' => [
163         'nosniff',
164       ],
165     },
166   },
167   #'proxy' => {
168   #  'remoteurl' => 'https://registry-1.docker.io',
169   #},
170   'health' => {
171     'storagedriver' => {
172       'enabled' => true,
173       'interval' => '10s',
174       'threshold' => 3,
175     },
176   },
177 }
178 default['docker-grid']['registry']['docker-compose']['app_dir'] = "#{node['docker-grid']['compose']['app_dir']}/registry"
179 # ./docker-compose.yml
180 default['docker-grid']['registry']['docker-compose']['config_format_version'] = '1'
181 default['docker-grid']['registry']['docker-compose']['service_name'] = 'registry'
182 default['docker-grid']['registry']['docker-compose']['host_data_volume'] = '/var/lib/docker-registry'
183 service_name = node['docker-grid']['registry']['docker-compose']['service_name']
184 version_1_config = {
185   # Version 1 docker-compose format
186   service_name => {
187     'restart' => 'always',
188     'image' => 'registry:2',
189     #'ports' => [
190     #  '5000:5000',
191     #],
192     #'environment' => {
193     #  'REGISTRY_HTTP_TLS_CERTIFICATE' => '/certs/domain.crt',
194     #  'REGISTRY_HTTP_TLS_KEY' =>         '/certs/domain.key',
195     #  'REGISTRY_AUTH' =>                'htpasswd',
196     #  'REGISTRY_AUTH_HTPASSWD_PATH' =>  '/auth/htpasswd',
197     #  'REGISTRY_AUTH_HTPASSWD_REALM' => 'Registry Realm',
198     #},
199     #'volumes' => [
200     #  #'./etc/config.yml:/etc/docker/registry/config.yml',  # Overriding the entire configuration file
201     #  "#{node['docker-grid']['registry']['docker-compose']['host_data_volume']}:/var/lib/registry",
202     #  '/path/certs:/certs',
203     #  '/path/auth:/auth',
204     #],
205   },
206 }
207 version_2_config = {
208   # Version 2 docker-compose format
209   'version' => '2',
210   'services' => version_1_config,
211 }
212 default['docker-grid']['registry']['docker-compose']['config'] = \
213   node['docker-grid']['registry']['docker-compose']['config_format_version'] == '2' ? version_2_config : version_1_config
214 # ./etc/config.yml
215 # See: https://docs.docker.com/registry/configuration/#/overriding-the-entire-configuration-file
216 default['docker-grid']['registry']['docker-compose']['registry-config'] = nil