From 79566ef8ce5834ad5fefa525fefb720faab04e81 Mon Sep 17 00:00:00 2001 From: Alexandre Marangone Date: Mon, 22 Apr 2013 16:59:24 -0700 Subject: [PATCH] update radosgw recipe - Create /etc/ceph/ dir - Create/Update ceph.conf with radosgw client - Support upstart and init - Create radosgw client keyring Signed-off-by: Alexandre Marangone --- attributes/radosgw.rb | 6 ++++ recipes/radosgw.rb | 50 ++++++++++++++++++++++++++++----- templates/default/s3gw.fcgi.erb | 2 ++ 3 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 templates/default/s3gw.fcgi.erb diff --git a/attributes/radosgw.rb b/attributes/radosgw.rb index b85bfa2..6bc5278 100644 --- a/attributes/radosgw.rb +++ b/attributes/radosgw.rb @@ -22,3 +22,9 @@ default["ceph"]["radosgw"]["rgw_addr"] = "*:80" 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 diff --git a/recipes/radosgw.rb b/recipes/radosgw.rb index 97a108c..7447364 100644 --- a/recipes/radosgw.rb +++ b/recipes/radosgw.rb @@ -41,12 +41,48 @@ packages.each do |pkg| end end -service "radosgw" do - service_name "radosgw" - supports :restart => true - action[:enable,:start] -end +include_recipe "ceph::conf" -if node["ceph"]["radosgw"]["webserver_companion"] - include_recipe "ceph::radosgw_#{node["ceph"]["radosgw"]["webserver_companion"]}" +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 + + 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 diff --git a/templates/default/s3gw.fcgi.erb b/templates/default/s3gw.fcgi.erb new file mode 100644 index 0000000..c6b684f --- /dev/null +++ b/templates/default/s3gw.fcgi.erb @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/bin/radosgw -c /etc/ceph/ceph.conf -n <%= @ceph_rgw_client %>