From ec28d22d1eddebb007bf7b488b1ab501379a412e Mon Sep 17 00:00:00 2001 From: Wil Date: Wed, 29 Oct 2014 11:18:56 +0900 Subject: [PATCH 1/2] set correct etc config directory for default consul behavior --- recipes/_service.rb | 8 +++++++- spec/unit/recipes/_service_spec.rb | 30 +++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/recipes/_service.rb b/recipes/_service.rb index c3fa388a..06cd2fdb 100644 --- a/recipes/_service.rb +++ b/recipes/_service.rb @@ -131,7 +131,13 @@ case node['consul']['init_style'] when 'init' - template '/etc/sysconfig/consul' do + if platform_family?('debian') + etc_config_dir = '/etc/default/consul' + else + etc_config_dir = '/etc/sysconfig/consul' + end + + template etc_config_dir do source 'consul-sysconfig.erb' mode 0755 notifies :create, 'template[/etc/init.d/consul]', :immediately diff --git a/spec/unit/recipes/_service_spec.rb b/spec/unit/recipes/_service_spec.rb index 5a6a0f0f..a9fcd992 100644 --- a/spec/unit/recipes/_service_spec.rb +++ b/spec/unit/recipes/_service_spec.rb @@ -18,6 +18,22 @@ .with(group: 'root') .with(mode: 0600) end + it do + expect(chef_run).to create_template('/etc/init.d/consul') + .with(source: 'consul-init.erb') + .with(mode: 0755) + end + it do + expect(chef_run).to enable_service('consul') + .with(supports: {status: true, restart: true, reload: true}) + expect(chef_run).to start_service('consul') + end + end + + context 'config on centos' do + let(:chef_run) do + ChefSpec::Runner.new(platform: 'centos', version: '6.3').converge(described_recipe) + end it do expect(chef_run).to create_template('/etc/sysconfig/consul') .with(source: 'consul-sysconfig.erb') @@ -26,15 +42,19 @@ it do expect(chef_run).to render_file('/etc/sysconfig/consul').with_content('GOMAXPROCS=1') end + end + + context 'config on ubuntu' do + let(:chef_run) do + ChefSpec::Runner.new(platform: 'ubuntu', version: '14.04').converge(described_recipe) + end it do - expect(chef_run).to create_template('/etc/init.d/consul') - .with(source: 'consul-init.erb') + expect(chef_run).to create_template('/etc/default/consul') + .with(source: 'consul-sysconfig.erb') .with(mode: 0755) end it do - expect(chef_run).to enable_service('consul') - .with(supports: {status: true, restart: true, reload: true}) - expect(chef_run).to start_service('consul') + expect(chef_run).to render_file('/etc/default/consul').with_content('GOMAXPROCS=1') end end From b448e1d1ffe6758e2149a41c88166a9baa0a2858 Mon Sep 17 00:00:00 2001 From: Wil Date: Wed, 29 Oct 2014 11:53:15 +0900 Subject: [PATCH 2/2] update the init script properly as well --- attributes/default.rb | 11 ++++++++++- recipes/_service.rb | 8 +------- templates/default/consul-init.erb | 4 ++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/attributes/default.rb b/attributes/default.rb index d9157614..3e38f3cf 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -47,6 +47,15 @@ default['consul']['service_mode'] = 'bootstrap' default['consul']['data_dir'] = '/var/lib/consul' default['consul']['config_dir'] = '/etc/consul.d' +case node['platform_family'] +when 'debian' + default['consul']['etc_config_dir'] = '/etc/default/consul' +when 'rhel' + default['consul']['etc_config_dir'] = '/etc/sysconfig/consul' +else + default['consul']['etc_config_dir'] = '/etc/sysconfig/consul' +end + default['consul']['servers'] = [] default['consul']['init_style'] = 'init' # 'init', 'runit' default['consul']['service_user'] = 'consul' @@ -60,4 +69,4 @@ # UI attributes default['consul']['client_addr'] = '0.0.0.0' default['consul']['ui_dir'] = '/var/lib/consul/ui' -default['consul']['serve_ui'] = false \ No newline at end of file +default['consul']['serve_ui'] = false diff --git a/recipes/_service.rb b/recipes/_service.rb index 06cd2fdb..7c54ca94 100644 --- a/recipes/_service.rb +++ b/recipes/_service.rb @@ -131,13 +131,7 @@ case node['consul']['init_style'] when 'init' - if platform_family?('debian') - etc_config_dir = '/etc/default/consul' - else - etc_config_dir = '/etc/sysconfig/consul' - end - - template etc_config_dir do + template node['consul']['etc_config_dir'] do source 'consul-sysconfig.erb' mode 0755 notifies :create, 'template[/etc/init.d/consul]', :immediately diff --git a/templates/default/consul-init.erb b/templates/default/consul-init.erb index a19d1e2d..c7b79bf1 100644 --- a/templates/default/consul-init.erb +++ b/templates/default/consul-init.erb @@ -14,8 +14,8 @@ # * Multi Datacenter ### END INIT INFO -if [ -f /etc/sysconfig/consul ]; then -. /etc/sysconfig/consul +if [ -f <%= node['consul']['etc_config_dir'] %> ]; then +. <%= node['consul']['etc_config_dir'] %> fi export GOMAXPROCS=${GOMAXPROCS}