|`['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
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 = {}
],
'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",
+ ],
}
}
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'
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']