cookbook-ceph/recipes/bootstrap_osd.rb
Tommi Virtanen 555d3ef1dc Make ceph::osd recipe install gdisk for ceph-disk-prepare.
ceph.deb only recommends it, as there are ways of using Ceph without
using ceph-disk-prepare.
2012-07-11 10:07:19 -07:00

46 lines
1.2 KiB
Ruby

# this recipe allows bootstrapping new osds, with help from mon
include_recipe "ceph::osd"
include_recipe "ceph::conf"
package 'gdisk' do
action :upgrade
end
if is_crowbar?
mons = search(:node, "role:ceph-mon AND ceph_config_environment:#{node['ceph']['config']['environment']} AND ceph_bootstrap_osd_key:*")
else
mons = search(:node, "role:ceph-mon AND chef_environment:#{node.chef_environment} AND ceph_bootstrap_osd_key:*")
end
if mons.length < 1 then
puts "No ceph-mon found."
else
directory "/var/lib/ceph/bootstrap-osd" do
owner "root"
group "root"
mode "0755"
end
# TODO cluster name
cluster = 'ceph'
file "/var/lib/ceph/bootstrap-osd/#{cluster}.keyring.raw" do
owner "root"
group "root"
mode "0440"
content mons[0]["ceph_bootstrap_osd_key"]
end
execute "format as keyring" do
command <<-EOH
set -e
# TODO don't put the key in "ps" output, stdout
read KEY <'/var/lib/ceph/bootstrap-osd/#{cluster}.keyring.raw'
ceph-authtool '/var/lib/ceph/bootstrap-osd/#{cluster}.keyring' --create-keyring --name=client.bootstrap-osd --add-key="$KEY"
rm -f '/var/lib/ceph/bootstrap-osd/#{cluster}.keyring.raw'
EOH
end
end