From: Guilhem Lettron Date: Fri, 16 May 2014 10:21:07 +0000 (+0200) Subject: Some refactor on mon_secret X-Git-Tag: v0.8.0~37 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dfaf71e1ed5777a2eafb073b3f160624abd14351;p=ceph-cookbooks.git Some refactor on mon_secret --- diff --git a/libraries/default.rb b/libraries/default.rb index 3e12340..495a96a 100644 --- a/libraries/default.rb +++ b/libraries/default.rb @@ -94,17 +94,17 @@ def mon_addresses end def mon_secret - # find the monitor secret - mon_secret = '' - mons = mon_nodes - if !mons.empty? - mon_secret = mons[0]['ceph']['monitor-secret'] - elsif mons.empty? && node['ceph']['monitor-secret'] - mon_secret = node['ceph']['monitor-secret'] + if node['ceph']['encrypted_data_bags'] + secret = Chef::EncryptedDataBagItem.load_secret(node['ceph']['mon']['secret_file']) + Chef::EncryptedDataBagItem.load('ceph', 'mon', secret)['secret'] + elsif !mon_nodes.empty? + mon_nodes[0]['ceph']['monitor-secret'] + elsif node['ceph']['monitor-secret'] + node['ceph']['monitor-secret'] else - Chef::Log.warn('No monitor secret found') + Chef::Log.info('No monitor secret found') + nil end - mon_secret end def quorum_members_ips diff --git a/recipes/mon.rb b/recipes/mon.rb index 683cea6..31fc96a 100644 --- a/recipes/mon.rb +++ b/recipes/mon.rb @@ -44,31 +44,28 @@ cluster = 'ceph' unless File.exist?("/var/lib/ceph/mon/ceph-#{node['hostname']}/done") keyring = "#{Chef::Config[:file_cache_path]}/#{cluster}-#{node['hostname']}.mon.keyring" - if node['ceph']['encrypted_data_bags'] - secret = Chef::EncryptedDataBagItem.load_secret(node['ceph']['mon']['secret_file']) - monitor_secret = Chef::EncryptedDataBagItem.load('ceph', 'mon', secret)['secret'] - else - monitor_secret = mon_secret # try to find an existing secret + execute 'format mon-secret as keyring' do + command lazy { "ceph-authtool '#{keyring}' --create-keyring --name=mon. --add-key='#{mon_secret}' --cap mon 'allow *'" } + creates "#{Chef::Config[:file_cache_path]}/#{cluster}-#{node['hostname']}.mon.keyring" + only_if { mon_secret } end - if monitor_secret && monitor_secret != '' - execute 'format mon-secret as keyring' do - command "ceph-authtool '#{keyring}' --create-keyring --name=mon. --add-key='#{monitor_secret}' --cap mon 'allow *'" - creates "#{Chef::Config[:file_cache_path]}/#{cluster}-#{node['hostname']}.mon.keyring" - end - else # make a new monitor secret - execute 'generate mon-secret as keyring' do - command "ceph-authtool '#{keyring}' --create-keyring --name=mon. --gen-key --cap mon 'allow *'" - creates "#{Chef::Config[:file_cache_path]}/#{cluster}-#{node['hostname']}.mon.keyring" - end - ruby_block 'save monitor secret to node' do - block do - fetch = Mixlib::ShellOut.new("ceph-authtool '#{keyring}' --print-key --name=mon.") - fetch.run_command - key = fetch.stdout - node.set['ceph']['monitor-secret'] = key - end + execute 'generate mon-secret as keyring' do + command "ceph-authtool '#{keyring}' --create-keyring --name=mon. --gen-key --cap mon 'allow *'" + creates "#{Chef::Config[:file_cache_path]}/#{cluster}-#{node['hostname']}.mon.keyring" + not_if { mon_secret } + notifies :create, 'ruby_block[save mon_secret]', :immediately + end + + ruby_block 'save mon_secret' do + block do + fetch = Mixlib::ShellOut.new("ceph-authtool '#{keyring}' --print-key --name=mon.") + fetch.run_command + key = fetch.stdout + node.set['ceph']['monitor-secret'] = key + node.save end + action :nothing end execute 'ceph-mon mkfs' do