diff --git a/attributes/repo.rb b/attributes/repo.rb index b58fb12..6089a8c 100644 --- a/attributes/repo.rb +++ b/attributes/repo.rb @@ -35,9 +35,9 @@ when "fedora" 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" diff --git a/recipes/mds.rb b/recipes/mds.rb index 9546dfd..73f9034 100644 --- a/recipes/mds.rb +++ b/recipes/mds.rb @@ -32,7 +32,9 @@ end 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 diff --git a/recipes/osd.rb b/recipes/osd.rb index 1d82923..6665542 100644 --- a/recipes/osd.rb +++ b/recipes/osd.rb @@ -40,7 +40,7 @@ end package 'cryptsetup' do action :upgrade - only_if { node[:dmcrypt] } + only_if { node['dmcrypt'] } end service_type = node["ceph"]["osd"]["init_style"] @@ -72,33 +72,24 @@ else 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 - - if do_trigger - system 'udevadm', \ - "trigger", \ - "--subsystem-match=block", \ - "--action=add" - fail 'udevadm trigger failed' unless $?.exitstatus == 0 - 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 + + 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