OSDN Git Service

adds data persistent volumes. etcd-grid-0.1.1
authorwhitestar <whitestar@users.osdn.me>
Fri, 3 Nov 2017 13:13:31 +0000 (22:13 +0900)
committerwhitestar <whitestar@users.osdn.me>
Fri, 3 Nov 2017 13:13:31 +0000 (22:13 +0900)
cookbooks/etcd-grid/CHANGELOG.md
cookbooks/etcd-grid/README.md
cookbooks/etcd-grid/attributes/default.rb
cookbooks/etcd-grid/recipes/docker-compose.rb
cookbooks/etcd-grid/version

index da97860..858e523 100644 (file)
@@ -1,5 +1,10 @@
 # etcd-grid CHANGELOG
 
+0.1.1
+-----
+- refactoring.
+- adds data persistent volumes.
+
 0.1.0
 -----
 - Initial release of etcd-grid
index 16341cb..baeccb2 100644 (file)
@@ -37,6 +37,7 @@ This cookbook sets up a etcd cluster.
 |`['etcd-grid']['node']['port4client']`|String|Port number for client requests.|`'2379'`|
 |`['etcd-grid']['node']['port4peer']`|String|Port number for peer communication.|`'2380'`|
 |`['etcd-grid']['docker-compose']['app_dir']`|String||`"#{node['docker-grid']['compose']['app_dir']}/etcd"`|
+|`['etcd-grid']['docker-compose']['data_dir']`|String||`"#{node['etcd-grid']['docker-compose']['app_dir']}/data"`|
 |`['etcd-grid']['docker-compose']['config']`|Hash|`docker-compose.yml` configurations.|See `attributes/default.rb`|
 
 ## Usage
index 5cf9cac..bf085fe 100644 (file)
@@ -29,11 +29,13 @@ default['etcd-grid']['cluster']['size'] = 3  # recommended: 3, 5, 7
 default['etcd-grid']['node']['port4client'] = '2379'
 default['etcd-grid']['node']['port4peer'] = '2380'
 default['etcd-grid']['docker-compose']['app_dir'] = "#{node['docker-grid']['compose']['app_dir']}/etcd"
+default['etcd-grid']['docker-compose']['data_dir'] = "#{node['etcd-grid']['docker-compose']['app_dir']}/data"
 
 image = "#{node['etcd-grid']['image']['url']}:#{node['etcd-grid']['image']['version']}"
 cluster_size = node['etcd-grid']['cluster']['size'].to_i
 port4client = node['etcd-grid']['node']['port4client']
 port4peer = node['etcd-grid']['node']['port4peer']
+data_dir = node['etcd-grid']['docker-compose']['data_dir']
 
 nodes = []
 services = {}
@@ -52,14 +54,19 @@ services = {}
     ],
     'environment' => {
       'ETCD_NAME' => "node#{num}",
+      'ETCD_DATA_DIR' => "node#{num}.etcd",
+      'ETCD_LISTEN_CLIENT_URLS'          => "http://etcd#{num}:#{port4client},http://localhost:#{port4client}",
+      'ETCD_ADVERTISE_CLIENT_URLS'       => "http://etcd#{num}:#{port4client}",
+      'ETCD_LISTEN_PEER_URLS'            => "http://etcd#{num}:#{port4peer}",
       'ETCD_INITIAL_ADVERTISE_PEER_URLS' => "http://etcd#{num}:#{port4peer}",
       'ETCD_INITIAL_CLUSTER' => nodes.join(','),
-      'ETCD_INITIAL_CLUSTER_STATE' => 'new',
       'ETCD_INITIAL_CLUSTER_TOKEN' => 'etcd-test-token',  # TODO: stored in Vault.
-      'ETCD_LISTEN_CLIENT_URLS' => "http://etcd#{num}:#{port4client},http://localhost:#{port4client}",
-      'ETCD_LISTEN_PEER_URLS' => "http://etcd#{num}:#{port4peer}",
-      'ETCD_ADVERTISE_CLIENT_URLS' => "http://etcd#{num}:#{port4client}",
+      'ETCD_INITIAL_CLUSTER_STATE' => 'new',
+      'ETCDCTL_API' => '3',
     },
+    'volumes' => [
+      "#{data_dir}/node#{num}.etcd:/node#{num}.etcd:rw",
+    ],
   }
 }
 
index e3ccd42..dc2022d 100644 (file)
@@ -22,10 +22,13 @@ doc_url = 'https://quay.io/repository/coreos/etcd'
 include_recipe 'platform_utils::kernel_user_namespace'
 include_recipe 'docker-grid::compose'
 
+cluster_size = node['etcd-grid']['cluster']['size'].to_i
 app_dir = node['etcd-grid']['docker-compose']['app_dir']
+data_dir = node['etcd-grid']['docker-compose']['data_dir']
 
 [
   app_dir,
+  data_dir,
 ].each {|dir|
   resources(directory: dir) rescue directory dir do
     owner 'root'
@@ -35,6 +38,16 @@ app_dir = node['etcd-grid']['docker-compose']['app_dir']
   end
 }
 
+(1..cluster_size).each {|num|
+  dir = "#{data_dir}/node#{num}.etcd"
+  resources(directory: dir) rescue directory dir do
+    owner 'root'
+    group 'root'
+    mode '0755'
+    recursive true
+  end
+}
+
 #config_srvs = node['etcd-grid']['docker-compose']['config']['services']
 #override_config_srvs = node.override['etcd-grid']['docker-compose']['config']['services']
 #force_override_config_srvs = node.force_override['etcd-grid']['docker-compose']['config']['services']