when "suse"
# (Open)SuSE default repositories
# Chef doesn't make a difference between suse and opensuse
- suse = %x[ head -n1 /etc/SuSE-release| awk '{print $1}' ].chomp.downcase # can be suse or opensuse
+ suse = Mixlib::ShellOut.new("head -n1 /etc/SuSE-release| awk '{print $1}'").run_command.stdout.chomp.downcase
suse = "sles" if suse == "suse"
- suse_version = suse << %x[ grep VERSION /etc/SuSE-release | awk -F'= ' '{print $2}' ].chomp
+ suse_version = suse << Mixlib::ShellOut.new("grep VERSION /etc/SuSE-release | awk -F'= ' '{print $2}'").run_command.stdout.chomp
default['ceph']['suse']['stable']['repository'] = "#{node['ceph']['repo_url']}/rpm-#{node['ceph']['version']}/#{suse_version}/x86_64/ceph-release-1-0.#{suse_version}.noarch.rpm"
default['ceph']['suse']['testing']['repository'] = "#{node['ceph']['repo_url']}/rpm-testing/#{suse_version}/x86_64/ceph-release-1-0.#{suse_version}.noarch.rpm"
ruby_block "create mds client key" do
block do
- keyring = %x[ ceph auth get-or-create mds.#{node['hostname']} osd 'allow *' mon 'allow rwx' --name mon. --key='#{node["ceph"]["monitor-secret"]}' ]
+ cmd = "ceph auth get-or-create mds.#{node['hostname']} osd 'allow *' mon 'allow rwx' --name mon. --key='#{node["ceph"]["monitor-secret"]}'"
+ keyring = Mixlib::ShellOut.new(cmd).run_command.stdout
+
keyfile = File.new("/var/lib/ceph/mds/#{cluster}-#{node['hostname']}/keyring", "w")
keyfile.puts(keyring)
keyfile.close
package 'cryptsetup' do
action :upgrade
- only_if { node[:dmcrypt] }
+ only_if { node['dmcrypt'] }
end
service_type = node["ceph"]["osd"]["init_style"]
end
if crowbar?
- ruby_block "select new disks for ceph osd" do
- block do
- do_trigger = false
- node["crowbar"]["disks"].each do |disk, data|
- if node["crowbar"]["disks"][disk]["usage"] == "Storage"
- puts "Disk: #{disk} should be used for ceph"
-
- system 'ceph-disk-prepare', \
- "/dev/#{disk}"
- fail 'ceph-disk-prepare failed' unless $?.exitstatus == 0
-
- do_trigger = true
-
- node.set["crowbar"]["disks"][disk]["usage"] = "ceph-osd"
- node.save
- end
- end
+ node["crowbar"]["disks"].each do |disk, data|
+ execute "ceph-disk-prepare #{disk}" do
+ command "ceph-disk-prepare /dev/#{disk}"
+ only_if { node["crowbar"]["disks"][disk]["usage"] == "Storage" }
+ notifies :run, "execute[udev trigger]", :immediately
+ end
- if do_trigger
- system 'udevadm', \
- "trigger", \
- "--subsystem-match=block", \
- "--action=add"
- fail 'udevadm trigger failed' unless $?.exitstatus == 0
+ ruby_block "set disk usage for #{disk}" do
+ block do
+ node.set["crowbar"]["disks"][disk]["usage"] = "ceph-osd"
+ node.save
end
-
end
end
+
+ execute "udev trigger" do
+ command "udevadm trigger --subsystem-match=block --action=add"
+ action :nothing
+ end
else
# Calling ceph-disk-prepare is sufficient for deploying an OSD
# After ceph-disk-prepare finishes, the new device will be caught