Skip to content

Commit

Permalink
Merge pull request #63 from goldstar/master
Browse files Browse the repository at this point in the history
ChefSpec fixes, supervisor, Ubuntu 16.04 support
  • Loading branch information
adamkrone committed Jan 9, 2017
2 parents 6d9adab + 3af6c2b commit 24c2b3d
Show file tree
Hide file tree
Showing 18 changed files with 141 additions and 35 deletions.
18 changes: 18 additions & 0 deletions .kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ provisioner:
platforms:
- name: ubuntu-14.04
- name: ubuntu-12.04
- name: ubuntu-16.04
- name: debian-8.2
- name: debian-7.9
- name: centos-6.7
Expand Down Expand Up @@ -117,3 +118,20 @@ suites:
consul_template:
config:
consul: '127.0.0.1:8500'
- name: supervisor
run_list:
- recipe[supervisor::default]
- recipe[consul::default]
- recipe[consul-template::default]
- recipe[consul-template-spec::consul_template_config]
includes: ['centos-7.2']
attributes:
consul:
init_style: 'supervisor'
config:
bootstrap_expect: 1
server: true
consul_template:
init_style: 'supervisor'
config:
consul: '127.0.0.1:8500'
6 changes: 6 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Style/FrozenStringLiteralComment:
Enabled: false

Metrics/BlockLength:
Enabled: false

AllCops:
Exclude:
- 'metadata.rb'
Expand Down
2 changes: 1 addition & 1 deletion .rubocop_todo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
# URISchemes: http, https
Metrics/LineLength:
Max: 112
Max: 120

# Offense count: 1
# Configuration parameters: EnforcedStyle, SupportedStyles.
Expand Down
5 changes: 3 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ language: ruby
sudo: false
bundler_args: --jobs 4 --without integration
rvm:
- 2.1.8
- 2.2.4
script:
- bundle exec rake
- bundle exec rake rubocop
- bundle exec rake foodcritic
- bundle exec rake chefspec
notifications:
email:
recipients:
Expand Down
1 change: 1 addition & 0 deletions Berksfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ metadata
cookbook 'apt'
cookbook 'consul'
cookbook 'libarchive'
cookbook 'supervisor'

group :test do
cookbook 'consul-template-spec', path: 'spec/fixtures/cookbooks/consul-template-spec'
Expand Down
12 changes: 8 additions & 4 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
source "https://rubygems.org"

gem 'berkshelf'
gem 'serverspec'
gem 'foodcritic'
gem 'chefspec'
gem 'chef', '~> 12.7.2'
gem 'rubocop', require: false
gem 'chefspec'
gem 'coveralls', require: false
gem 'foodcritic'
gem 'kitchen-vagrant'
gem 'rubocop', require: false
gem 'serverspec'
gem 'stove'
gem 'test-kitchen'
gem 'winrm'
gem 'winrm-fs'
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Installs and configures [consul-template](https://github.com/hashicorp/consul-te
- `node['consul_template']['config_dir']` - The directory that contains the
configuration files for consul-template.
- `node['consul_template']['init_style']` - Defines the init system that the
consul-template service should use. Supports 'init', 'runit', or 'systemd'.
consul-template service should use. Supports 'init', 'runit', 'systemd', or 'supervisor'.
- `node['consul_template']['service_user']` - Defines the user that should be
used for the consul-template service.
- `node['consul_template']['service_group']` - Defines the group that should be
Expand Down
2 changes: 1 addition & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ end
begin
require "kitchen/rake_tasks"
Kitchen::RakeTasks.new
rescue LoadError
rescue LoadError, Kitchen::UserError
task("kitchen:all") { puts "Unable to run `test-kitchen`" }
end

Expand Down
32 changes: 32 additions & 0 deletions attributes/checksums.rb
Original file line number Diff line number Diff line change
Expand Up @@ -256,4 +256,36 @@
'consul-template_0.15.0_solaris_amd64' => '092b339a1e3487b979caa26aa276a91a4b5f7c964971bc9793f07154ad44ddf7',
'consul-template_0.15.0_windows_386' => '7959b7624eef71fcac531bfa908c245d26ba8363bf61f19b4e027e649791dfd9',
'consul-template_0.15.0_windows_amd64' => '40ff124f91b5ec1405621c0b72e26e2877b40a6217770488464b8e97015f1648',
'consul-template_0.16.0_darwin_386' => '326f1bc31e770758b952f7313afcf89e7227ee2a472f4e6fe5c0f763debc48ee',
'consul-template_0.16.0_darwin_amd64' => '5f932f3601a1b5ff9e205f130635fa62638ea66e335a420457e7df39d95e4796',
'consul-template_0.16.0_freebsd_386' => '332dd67a2e7f525caae155103cf9b99b85c2a900c65b19df254e7bbb75c34514',
'consul-template_0.16.0_freebsd_amd64' => '12524bc543c9ce6c964b18177106a0b77c47b0afcff058db5c9bf21e0bc48b76',
'consul-template_0.16.0_freebsd_arm' => '736f1f576f16086e3d7d3630640e40b911b0ef1d1f120c3a27412b617149b2d1',
'consul-template_0.16.0_linux_386' => '497235d49a3c32b605416536a721dbcecb817d75f41f42a5a3e3dc7d6d74f7ff',
'consul-template_0.16.0_linux_amd64' => '064b0b492bb7ca3663811d297436a4bbf3226de706d2b76adade7021cd22e156',
'consul-template_0.16.0_linux_arm' => 'eba526fd96330ffebfb4a2466f5ecf797e46df5ddab6927912468257b245d38a',
'consul-template_0.16.0_netbsd_386' => '237a7f0b2bec644ae8a949d32228b02a37854eaebc9f618c0ee2c2f5b0b5d480',
'consul-template_0.16.0_netbsd_amd64' => 'b169061ea5ddcd785833eceaf7ef9eca2a9fb83f579f851dd4c9419ea2834905',
'consul-template_0.16.0_netbsd_arm' => '91a1a99c83cb50d7a2e90415af2cb17bbc9ad17b992492151bd24717c1e69a99',
'consul-template_0.16.0_openbsd_386' => 'fcd723775c57b1b15d8402a80e859f8ddc52bc11f1ebc5515514a14149c63d5f',
'consul-template_0.16.0_openbsd_amd64' => '602705d76906b23271195911878836100c7e0bc2434f6fc126e722588647e2f8',
'consul-template_0.16.0_solaris_amd64' => 'd862879d5d0b85c1f6e49c459ab4a89530cf99d9d7ec65e7a51ee3cb9543bfab',
'consul-template_0.16.0_windows_386' => '293b5009167eb611cacc2fb2910b8f92c1b7bce12d19d87ca158a78049463c98',
'consul-template_0.16.0_windows_amd64' => '824eff8a540510dd185023def1b957a09dc62bc2cbaab820525ea038c6bd5d0d',
'consul-template_0.18.0-rc1_darwin_386' => '3dd55fdfbb18c77235636eb70e6715b52786851862dfc802df7eb3639f963853',
'consul-template_0.18.0-rc1_darwin_amd64' => '995c6d34a797bcc9afeac24c21c40d2c9367d69aec9781db4e7ec18eb7fe3e2a',
'consul-template_0.18.0-rc1_freebsd_386' => '9d8d6593874e66548ad246e270ae1f1530c8153ca467172bcc09f50f154aa5e8',
'consul-template_0.18.0-rc1_freebsd_amd64' => '52b7b0a727036b30bce019536a61de5e94e17b07d78e6153021741f008472120',
'consul-template_0.18.0-rc1_freebsd_arm' => '61652d5d09afad7668767fed59a7b933aa1465481db5e1565c941154636a3b8a',
'consul-template_0.18.0-rc1_linux_386' => 'dfc0735443844b2385a8856e63cd48e67d5089c092c5076dcee562bbabb7c3ec',
'consul-template_0.18.0-rc1_linux_amd64' => 'a46d00d71c907c3c40af2b23b89c378debc806084d3b4b60f4161c0988edefb1',
'consul-template_0.18.0-rc1_linux_arm' => 'cfd79eeaf82ed029d4bcaae982891dba09c4067fea7efca273c8d0bdc3ab3b3f',
'consul-template_0.18.0-rc1_netbsd_386' => '158e37d3fd00539440873a3bf03e1bab916a69810fb52fe656a08776d562650c',
'consul-template_0.18.0-rc1_netbsd_amd64' => 'fc20b6d1fd51ea2ac07162670a2b019345a1d59b86ffbe77bdeb691a77fb2ba5',
'consul-template_0.18.0-rc1_netbsd_arm' => '7695347ba9bcb76ae16638e1cc2a3008bfaa7b6a35ae4476412f1b2f1f6501ff',
'consul-template_0.18.0-rc1_openbsd_386' => '01f351d0929e2cd5942296953366032c97f99861dd4660234ebce4c635695616',
'consul-template_0.18.0-rc1_openbsd_amd64' => 'a59961c7220d47579721c12ccd81f8354d49d5088ed5ebbf4fae0c73023c2b9f',
'consul-template_0.18.0-rc1_solaris_amd64' => 'ed5fc595b548d42329e11a04c932d0af258f67296b6b30cc490341ec0574985d',
'consul-template_0.18.0-rc1_windows_386' => 'd086fdda038f51218b023429ba503ca1fa120dd49bf20beae7d72d2c598056f6',
'consul-template_0.18.0-rc1_windows_amd64' => 'b45ea6e71d6405e835a491871617ae30db840467a1df5496e23254c3eea029e3',
}
31 changes: 22 additions & 9 deletions attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,18 @@
else
'/etc/consul-template.d'
end
default['consul_template']['init_style'] = platform?("ubuntu") ? 'upstart' : 'init' # 'init', 'runit', 'systemd', 'upstart'

# 'init', 'runit', 'systemd', 'upstart', 'supervisor'
default['consul_template']['init_style'] = if platform?("ubuntu")
if Chef::VersionConstraint.new('>= 15.04').include?(node['platform_version'])
'systemd'
else
'upstart'
end
else
'init'
end

default['consul_template']['service_user'] = 'consul-template'
default['consul_template']['service_group'] = 'consul-template'
default['consul_template']['template_mode'] = 0600
Expand All @@ -29,11 +40,13 @@
default['consul_template']['config'] = Hash.new

# Windows only
default['consul_template']['nssm_params'] = {
'AppDirectory' => data_path,
'AppStdout' => join_path(config_prefix_path, 'stdout.log'),
'AppStderr' => join_path(config_prefix_path, 'error.log'),
'AppRotateFiles' => 1,
'AppRotateOnline' => 1,
'AppRotateBytes' => 20_000_000
}
if node['platform'] == 'windows'
default['consul_template']['nssm_params'] = {
'AppDirectory' => data_path,
'AppStdout' => join_path(config_prefix_path, 'stdout.log'),
'AppStderr' => join_path(config_prefix_path, 'error.log'),
'AppRotateFiles' => 1,
'AppRotateOnline' => 1,
'AppRotateBytes' => 20_000_000
}
end
2 changes: 1 addition & 1 deletion metadata.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
supports 'centos', '>= 6.7'
supports 'arch'

depends 'ark'
depends 'libarchive'
depends 'golang', '~> 1.4'
depends 'runit'
depends 'nssm', '~> 1.2'
depends 'supervisor'

issues_url 'https://github.com/adamkrone/chef-consul-template/issues' if respond_to?(:issues_url)
source_url 'https://github.com/adamkrone/chef-consul-template' if respond_to?(:source_url)
3 changes: 3 additions & 0 deletions providers/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ def whyrun_supported?
when 'runit', 'systemd', 'upstart'
consul_template_user = node['consul_template']['service_user']
consul_template_group = node['consul_template']['service_group']
when 'supervisor'
consul_template_user = node['consul_template']['service_user']
consul_template_group = 'root'
else
consul_template_user = 'root'
consul_template_group = 'root'
Expand Down
11 changes: 11 additions & 0 deletions recipes/service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
when 'systemd', 'upstart'
consul_template_user = node['consul_template']['service_user']
consul_template_group = node['consul_template']['service_group']
when 'supervisor'
consul_template_user = node['consul_template']['service_user']
consul_template_group = 'root'
else
consul_template_user = 'root'
consul_template_group = 'root'
Expand Down Expand Up @@ -63,6 +66,8 @@
content JSON.pretty_generate(node['consul_template']['config'], quirks_mode: true)
if node['consul_template']['init_style'] == 'runit'
notifies :restart, 'runit_service[consul-template]', :delayed
elsif node['consul_template']['init_style'] == 'supervisor'
notifies :restart, 'supervisor_service[consul-template]', :delayed
else
notifies :restart, 'service[consul-template]', :delayed
end
Expand Down Expand Up @@ -132,4 +137,10 @@
subscribes :restart, "libarchive_file[#{ConsulTemplateHelpers.install_file(node)}]", :delayed
end

when 'supervisor'
supervisor_service 'consul-template' do
command "#{node['consul_template']['install_dir']}/consul-template -config #{node['consul_template']['config_dir']}"
user consul_template_user
action [:enable, :start]
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,9 @@
command: 'touch /tmp/consul-template-command-test',
perms: 777
}]
notifies :restart, 'service[consul-template]'
if node['consul_template']['init_style'] == 'supervisor'
notifies :restart, 'supervisor_service[consul-template]'
else
notifies :restart, 'service[consul-template]'
end
end
1 change: 1 addition & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
require 'coveralls'

require_relative 'support/matchers'
require_relative '../libraries/consul-template_helpers.rb'

Coveralls.wear!

Expand Down
4 changes: 0 additions & 4 deletions spec/support/matchers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ def start_runit_service(resource_name)
ChefSpec::Matchers::ResourceMatcher.new(:runit_service, :start, resource_name)
end

def cherry_pick_ark(resource_name)
ChefSpec::Matchers::ResourceMatcher.new(:ark, :cherry_pick, resource_name)
end

def install_golang_package(resource_name)
ChefSpec::Matchers::ResourceMatcher.new(:golang_package, :install, resource_name)
end
Expand Down
28 changes: 17 additions & 11 deletions templates/default/config-template.json.erb
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
<%
def t_attr(t, key, quote=true)
return "#{key.to_s} = #{quote ? "\"#{t[key]}\"" : t[key]}" unless t[key].nil?
end
%>
<% @templates.each do |template| -%>
template {
source = "<%= template[:source] %>"
destination = "<%= template[:destination] %>"
<% unless template[:command].nil? %>
command = "<%= template[:command] %>"
<% end %>
<% unless template[:perms].nil? %>
perms = <%= template[:perms] %>
<% end %>
<% unless template[:wait].nil? %>
wait = "<%= template[:wait] %>"
<% end %>
<%= t_attr(template, :source) %>
<%= t_attr(template, :destination) %>
<%= t_attr(template, :contents) %>
<%= t_attr(template, :command) %>
<%= t_attr(template, :command_timeout) %>
<%= t_attr(template, :perms, false) %>
<%= t_attr(template, :backup, false) %>
<%= t_attr(template, :left_delimiter) %>
<%= t_attr(template, :right_delimiter) %>
<%= t_attr(template, :wait) %>
}
<% end %>

10 changes: 10 additions & 0 deletions test/integration/supervisor/serverspec/service_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require 'serverspec'

set :backend, :exec

describe 'supervisor' do
describe command('supervisorctl status consul-template') do
its(:stdout) { should match(/consul-template/) }
its(:exit_status) { should eq 0 }
end
end

0 comments on commit 24c2b3d

Please sign in to comment.