Ubuntu 14.04 LTS + nginx 1.9.3 の環境で、knife solo 経由での nginx
reload が出来なくなっていました(Chef のバージョンは 12.4.1)。

サーバの CI では nginx start のみが実行され、nginx restart は実行
されないため、気づけなかったようです。

レシピは至って普通。

service 'nginx' do
  action [:enable, :start]
  supports status: true, restart: true, reload: true
end

template '/etc/nginx/sites-available/masutaka.net' do
  notifies :reload, 'service[nginx]'
end

/var/chef/cache/chef-stacktrace.out にはこんなエラーが。

Generated at 2015-07-26 01:10:55 +0900
---- Begin output of /sbin/reload nginx ----
STDOUT:
STDERR: reload: Job is not running: nginx
---- End output of /sbin/reload nginx ----
Ran /sbin/reload nginx returned 1

実際、そうなりました。よく分かりません。

$ sudo /sbin/reload nginx; echo $?
reload: Job is not running: nginx
1

/etc/init.d/nginx reload はできるので、レシピをこのように変更して
解決出来ました。

service 'nginx' do
  provider Chef::Provider::Service::Debian
  action [:enable, :start]
  supports status: true, restart: true, reload: true
end

/sbin/reload nginx が使われていたということは、
Chef::Provider::Service::Upstart が選択されていたのかな。

Chef::Provider::Service::Debian については
Chef::Provider::Service::Init を継承し、/usr/sbin/update-rc.d 系の
コマンドを使うことまでは分かりましたが、その辺無知なのでよく分かり
ません。

Chef::Provider::Service はいろいろあるみたいです。
https://github.com/chef/chef/tree/12.4.1/lib/chef/provider/service