diff --git a/attributes/default.rb b/attributes/default.rb index efb03c4b..b1f22dd3 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -94,6 +94,7 @@ default['consul']['service_user'] = 'root' default['consul']['service_group'] = 'root' end +default['consul']['system_account'] = false default['consul']['ports'] = { 'dns' => 8600, diff --git a/recipes/_service.rb b/recipes/_service.rb index 37c573d1..6c1e3830 100644 --- a/recipes/_service.rb +++ b/recipes/_service.rb @@ -38,6 +38,7 @@ username consul_user home '/dev/null' shell '/bin/false' + system node['consul']['system_account'] comment 'consul service user' end @@ -46,6 +47,7 @@ not_if { consul_group == 'root' } group_name consul_group members consul_user + system node['consul']['system_account'] append true end @@ -248,6 +250,12 @@ reload_command "'#{node['runit']['sv_bin']}' hup consul" end when 'systemd' + template node['consul']['etc_config_dir'] do + source 'consul-sysconfig.erb' + mode 0644 + notifies :create, "template[/etc/systemd/system/consul.service]", :immediately + end + template '/etc/systemd/system/consul.service' do source 'consul-systemd.erb' mode 0644 diff --git a/templates/default/consul-systemd.erb b/templates/default/consul-systemd.erb index a591784a..07d403e7 100644 --- a/templates/default/consul-systemd.erb +++ b/templates/default/consul-systemd.erb @@ -6,12 +6,13 @@ After=basic.target network.target [Service] User=<%= node['consul']['service_user'] %> Group=<%= node['consul']['service_group'] %> +EnvironmentFile=-<%= node['consul']['etc_config_dir'] %> ExecStart=<%= Chef::Consul.active_binary(node) %> agent \ -config-dir <%= node['consul']['config_dir'] %> ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure -RestartSec=42s +RestartSec=15s [Install] WantedBy=multi-user.target