default["ceph"]["radosgw"]["rgw_port"] = false
default["ceph"]["radosgw"]["webserver_companion"] = "apache2" #can be false
default['ceph']["radosgw"]['use_apache_fork'] = true
+case node['platform']
+when 'ubuntu'
+ default["ceph"]["radosgw"]["init_style"] = "upstart"
+else
+ default["ceph"]["radosgw"]["init_style"] = "sysvinit"
+end
end
end
-service "radosgw" do
- service_name "radosgw"
- supports :restart => true
- action[:enable,:start]
-end
+include_recipe "ceph::conf"
+
+unless File.exists?("/var/lib/ceph/radosgw/ceph-radosgw.#{node['hostname']}/done")
+ if node["ceph"]["radosgw"]["webserver_companion"]
+ include_recipe "ceph::radosgw_#{node["ceph"]["radosgw"]["webserver_companion"]}"
+ end
+
+ directory "/etc/ceph" do
+ owner "root"
+ group "root"
+ mode "0644"
+ action :create
+ end
-if node["ceph"]["radosgw"]["webserver_companion"]
- include_recipe "ceph::radosgw_#{node["ceph"]["radosgw"]["webserver_companion"]}"
+ ruby_block "create rados gateway client key" do
+ block do
+ keyring = %x[ ceph auth get-or-create client.radosgw.#{node['hostname']} osd 'allow rwx' mon 'allow r' --name mon. --key='#{node["ceph"]["monitor-secret"]}' ]
+ keyfile = File.new("/etc/ceph/ceph.client.radosgw.#{node['hostname']}.keyring", "w")
+ keyfile.puts(keyring)
+ keyfile.close
+ end
+ end
+
+ file "/var/lib/ceph/radosgw/ceph-radosgw.#{node['hostname']}/done" do
+ action :create
+ end
+
+ service "radosgw" do
+ case node["ceph"]["radosgw"]["init_style"]
+ when "upstart"
+ service_name "radosgw-all-starter"
+ provider Chef::Provider::Service::Upstart
+ else
+ if node['platform'] == "debian"
+ service_name "radosgw"
+ else
+ service_name "ceph-radosgw"
+ end
+ end
+ supports :restart => true
+ action [ :enable, :start ]
+ end
+else
+ Log.info("Rados Gateway already deployed")
end