OSDN Git Service

adds the ['docker-grid']['registry']['docker-compose']['host_data_volume'] attribute. docker-grid-0.2.8
authorwhitestar <whitestar@gaea.test>
Sun, 25 Dec 2016 13:32:39 +0000 (22:32 +0900)
committerwhitestar <whitestar@gaea.test>
Sun, 25 Dec 2016 13:32:39 +0000 (22:32 +0900)
cookbooks/docker-grid/CHANGELOG.md
cookbooks/docker-grid/README.md
cookbooks/docker-grid/attributes/default.rb
cookbooks/docker-grid/metadata.rb
cookbooks/docker-grid/recipes/registry.rb
roles/docker-registry.rb

index 8d3ecd6..6680a2d 100644 (file)
@@ -1,5 +1,9 @@
 # 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.
index f19e9f2..8268899 100644 (file)
@@ -1,5 +1,5 @@
 docker-grid Cookbook
-==================
+====================
 
 This cookbook sets up Docker engine.
 
@@ -55,6 +55,7 @@ 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`|
@@ -132,6 +133,7 @@ override_attributes(
     '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
@@ -191,6 +193,7 @@ override_attributes(
       },
       '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
index 8bd456a..14e7c3b 100644 (file)
@@ -69,6 +69,7 @@ default['docker-grid']['registry']['docker-compose']['app_dir'] = "#{node['docke
 # ./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
@@ -87,7 +88,7 @@ version_1_config = {
     #},
     #'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',
     #],
index 6c6ab13..c5eb839 100644 (file)
@@ -5,7 +5,7 @@ maintainer_email ''
 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'
 
index 4ff5d79..a218ec7 100644 (file)
@@ -37,28 +37,29 @@ etc_dir = "#{app_dir}/etc"
   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?
@@ -69,15 +70,25 @@ 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|
index 50eec3f..b397dad 100644 (file)
@@ -12,12 +12,14 @@ run_list(
 
 #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' => {
@@ -28,6 +30,7 @@ override_attributes(
               '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',
@@ -36,8 +39,9 @@ override_attributes(
             },
             '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',
             ],
           },
@@ -50,7 +54,7 @@ override_attributes(
       'grid_ca',
     ],
     'common_names' => [
-      'registry.docker.example.com',
+      registry_cn,
     ],
   }
 )