# docker-grid CHANGELOG
+0.2.8
+-----
+- adds the `['docker-grid']['registry']['docker-compose']['host_data_volume']` attribute.
+
0.2.7
-----
- adds the `['docker-grid']['compose']['home_dir']` attribute.
docker-grid Cookbook
-==================
+====================
This cookbook sets up Docker engine.
|`['docker-grid']['registry']['with_ssl_cert_cookbook']`|Boolean|If this attribute is true, `node['docker-grid']['registry']['docker-compose']['config']` are are overridden by the following `common_name` attributes.|`false`|
|`['docker-grid']['registry']['ssl_cert']['common_name']`|String|Registry server common name for TLS|`node['fqdn']`|
|`['docker-grid']['registry']['docker-compose']['app_dir']`|String||`"#{node['docker-grid']['compose']['app_dir']}/registry"`|
+|`['docker-grid']['registry']['docker-compose']['host_data_volume']`|String|Data directory path on the host filesystem or `nil` (unset).|`'/var/lib/docker-registry'`|
|`['docker-grid']['registry']['docker-compose']['config_format_version']`|String|`docker-compose.yml` format version. `'1'` or `'2'`|`'1'`|
|`['docker-grid']['registry']['docker-compose']['service_name']`|String|Docker registry service name in the `docker-compose.yml`|`'registry'`|
|`['docker-grid']['registry']['docker-compose']['config']`|Hash|`docker-compose.yml` configurations. See attributes/default.rb and [_Deploying a registry server_](https://docs.docker.com/registry/deploying/#/managing-with-compose) |See `attributes/default.rb`|
'registry' => {
'docker-compose' => {
'config_format_version' => '1',
+ 'host_data_volume' => nil,
'config' => {
# in docker-compose.yml
# See: https://docs.docker.com/registry/deploying/#/managing-with-compose
},
'docker-compose' => {
'config_format_version' => '1',
+ 'host_data_volume' => nil,
'config' => {
# in docker-compose.yml
# See: https://docs.docker.com/registry/deploying/#/managing-with-compose
# ./docker-compose.yml
default['docker-grid']['registry']['docker-compose']['config_format_version'] = '1'
default['docker-grid']['registry']['docker-compose']['service_name'] = 'registry'
+default['docker-grid']['registry']['docker-compose']['host_data_volume'] = '/var/lib/docker-registry'
service_name = node['docker-grid']['registry']['docker-compose']['service_name']
version_1_config = {
# Version 1 docker-compose format
#},
#'volumes' => [
# #'./etc/config.yml:/etc/docker/registry/config.yml', # Overriding the entire configuration file
- # '/path/data:/var/lib/registry',
+ # "#{node['docker-grid']['registry']['docker-compose']['data_volume']}:/var/lib/registry",
# '/path/certs:/certs',
# '/path/auth:/auth',
#],
license 'Apache 2.0'
description 'Installs/Configures Docker Engine.'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
-version '0.2.7'
+version '0.2.8'
source_url 'http://scm.osdn.jp/gitroot/metasearch/grid-chef-repo.git'
issues_url 'https://osdn.jp/projects/metasearch/ticket'
end
}
+environment = {}
+volumes = []
+
+host_data_volume = node['docker-grid']['registry']['docker-compose']['host_data_volume']
+unless host_data_volume.nil?
+ directory host_data_volume do
+ owner 'root'
+ group 'root'
+ mode '0755'
+ recursive true
+ end
+
+ volumes.push("#{host_data_volume}:/var/lib/registry")
+end
+
if node['docker-grid']['registry']['with_ssl_cert_cookbook']
::Chef::Recipe.send(:include, SSLCert::Helper)
cn = node['docker-grid']['registry']['ssl_cert']['common_name']
- version_1_config = {
- node['docker-grid']['registry']['docker-compose']['service_name'] => {
- 'environment' => {
- 'REGISTRY_HTTP_TLS_CERTIFICATE' => '/certs/domain.crt',
- 'REGISTRY_HTTP_TLS_KEY' => '/certs/domain.key',
- },
- 'volumes' => [
- "#{server_cert_path(cn)}:/certs/domain.crt:ro",
- "#{server_key_path(cn)}:/certs/domain.key:ro",
- ],
- },
- }
- version_2_config = {
- 'services' => version_1_config,
- }
-
- node.override['docker-grid']['registry']['docker-compose']['config'] = \
- node['docker-grid']['registry']['docker-compose']['config_format_version'] == '2' ? version_2_config : version_1_config
+ environment['REGISTRY_HTTP_TLS_CERTIFICATE'] = '/certs/domain.crt'
+ environment['REGISTRY_HTTP_TLS_KEY'] = '/certs/domain.key'
+ volumes.push("#{server_cert_path(cn)}:/certs/domain.crt:ro")
+ volumes.push("#{server_key_path(cn)}:/certs/domain.key:ro")
end
unless node['docker-grid']['registry']['docker-compose']['registry-config'].nil?
mode '0644'
end
- node.override['docker-grid']['registry']['docker-compose']['config'] = {
- 'registry' => {
- 'volumes' => [
- './etc/config.yml:/etc/docker/registry/config.yml:ro',
- ],
- },
- }
+ volumes.push('./etc/config.yml:/etc/docker/registry/config.yml:ro')
end
+service_name = node['docker-grid']['registry']['docker-compose']['service_name']
+version_1_config = {
+ service_name => {
+ },
+}
+
+version_1_config[service_name]['environment'] = environment unless environment.empty?
+version_1_config[service_name]['volumes'] = volumes unless volumes.empty?
+
+version_2_config = {
+ 'services' => version_1_config,
+}
+
+node.override['docker-grid']['registry']['docker-compose']['config'] = \
+ node['docker-grid']['registry']['docker-compose']['config_format_version'] == '2' ? version_2_config : version_1_config
+
[
'docker-compose.yml',
].each {|conf_file|
#default_attributes()
+registry_cn = 'registry.docker.example.com'
+
override_attributes(
'docker-grid' => {
'registry' => {
'with_ssl_cert_cookbook' => true,
'ssl_cert' => {
- 'common_name' => 'registry.docker.example.com',
+ 'common_name' => registry_cn,
},
'docker-compose' => {
'config' => {
'5000:5000',
],
'environment' => {
+ # These environment variables will be set by the docker-grid::registry recipe automatically.
#'REGISTRY_HTTP_TLS_CERTIFICATE' => '/certs/domain.crt',
#'REGISTRY_HTTP_TLS_KEY' => '/certs/domain.key',
'REGISTRY_AUTH' => 'htpasswd',
},
'volumes' => [
'/var/lib/docker-registry:/var/lib/registry',
- #'/etc/ssl/certs/01registry_docker_example_com.crt:/certs/domain.crt:ro',
- #'/etc/ssl/private/01registry_docker_example_com.key:/certs/domain.key:ro',
+ # These volumes will be set by the docker-grid::registry recipe automatically.
+ #"#{server_cert_path(node['docker-grid']['registry']['ssl_cert']['common_name'])}:/certs/domain.crt:ro",
+ #"#{server_key_path(node['docker-grid']['registry']['ssl_cert']['common_name'])}:/certs/domain.key:ro",
'./auth:/auth',
],
},
'grid_ca',
],
'common_names' => [
- 'registry.docker.example.com',
+ registry_cn,
],
}
)