]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-cookbooks.git/commitdiff
Allows nodes to specify a ceph environment to search 112/head
authorWalter Huf <walter.huf@corvisa.com>
Tue, 8 Jul 2014 20:16:44 +0000 (15:16 -0500)
committerWalter Huf <walter.huf@corvisa.com>
Tue, 8 Jul 2014 21:34:35 +0000 (16:34 -0500)
If a server is in a different environment than the ceph mons, but
it still wants to connect to the ceph cluster, it can specify a
node['ceph']['search_environment'] attribute that matches the
ceph mons' node.chef_environment attribute.
This will enable the server to find the ceph mon nodes, register
for cephx keyrings, and create a working ceph.conf file

attributes/conf.rb
libraries/default.rb
templates/default/ceph.conf.erb

index a2045c6c79555cac02717331cfc71eb092d393ef..8836945ae8bc4ee68583ca01959ab0b758103c3b 100644 (file)
@@ -1,2 +1,3 @@
 default['ceph']['config'] = {}
 default['ceph']['config-sections'] = {}
+default['ceph']['search_environment'] = true
index b7b34dc14f519e856c49a1c4431e4b7300217740..eb165d4cdc73e9d99e4a35ef126bb450826a31f5 100644 (file)
@@ -5,7 +5,7 @@ def crowbar?
   !defined?(Chef::Recipe::Barclamp).nil?
 end
 
-def mon_nodes
+def mon_env_search_string
   if crowbar?
     mon_roles = search(:role, 'name:crowbar-* AND run_list:role\[ceph-mon\]')
     unless mon_roles.empty?
@@ -13,8 +13,22 @@ def mon_nodes
       search_string = "(#{search_string}) AND ceph_config_environment:#{node['ceph']['config']['environment']}"
     end
   else
-    search_string = "ceph_is_mon:true AND chef_environment:#{node.chef_environment}"
+    search_string = 'ceph_is_mon:true'
+    if node['ceph']['search_environment'].is_a?(String)
+      # search for nodes with this particular env
+      search_string += " AND chef_environment:#{node['ceph']['search_environment']}"
+    elsif node['ceph']['search_environment']
+      # search for any nodes with this environment
+      search_string += " AND chef_environment:#{node.chef_environment}"
+    else
+      # search for any mon nodes
+    end
   end
+  search_string
+end
+
+def mon_nodes
+  search_string = mon_env_search_string
 
   if use_cephx? && !node['ceph']['encrypted_data_bags']
     search_string = "(#{search_string}) AND (ceph_bootstrap_osd_key:*)"
index e82d191792d78e767638433e278fff2526af63b2..6d6e4d2bb8dc5494dac44f9f9ea48ce84cb44b84 100644 (file)
@@ -1,6 +1,8 @@
 [global]
+<% if node['ceph']['is_mon'] -%>
   fsid = <%= node["ceph"]["config"]["fsid"] %>
   mon initial members = <%= node["ceph"]["config"]["mon_initial_members"] %>
+<% end -%>
   mon host = <%= @mon_addresses.sort.join(', ') %>
 <% if (! node['ceph']['config']['global'].nil?) -%>
   <% node['ceph']['config']['global'].sort.each do |k, v| %>