Difference between revisions of "OpenStack Configuration Example"

From Xen
(Recipes files)
(Recipes files)
Line 36: Line 36:
 
end
 
end
 
end
 
end
  +
</pre>
  +
when "xen"
  +
%w{kernel-xen xen xen-tools openvswitch-kmp-xen}.each do |pkg|
  +
package pkg do
  +
action :install
  +
end
  +
end
  +
  +
service "xend" do
  +
action :nothing
  +
supports :status => true, :start => true, :stop => true, :restart => true
  +
# restart xend only when xen kernel is already present
  +
only_if { %x[uname -r].include?('xen') }
  +
end
  +
  +
template "/etc/xen/xend-config.sxp" do
  +
source "xend-config.sxp.erb"
  +
group "root"
  +
owner "root"
  +
mode 0644
  +
variables(
  +
:node_platform => node[:platform],
  +
:libvirt_migration => node[:nova]["use_migration"],
  +
:shared_instances => node[:nova]["use_shared_instance_storage"],
  +
:libvirtd_listen_tcp => node[:nova]["use_migration"] ? 1 : 0,
  +
:libvirtd_listen_addr => Chef::Recipe::Barclamp::Inventory.get_network_by_type(node, "admin").address
  +
)
  +
notifies :restart, "service[xend]", :delayed
  +
end
  +
  +
set_boot_kernel_and_trigger_reboot('xen')
  +
<pre>
  +
 
</pre>
 
</pre>

Revision as of 09:22, 22 November 2014

The SUSE Cloud project contains a fully operational OpenStack implementation for Xen Project. It is an example of how to successfully employ Xen Project in OpenStack. This page attempts to document the Xen Project-specific configuration elements as an example of what a functional implementation might look like. As such, this page is less a "How To" and more a "What Is".

Where to Find the Configuration Files

The bulk of the Xen Project-specific entries will be in the Barclamp section of the Nova project within OpenStack. Most of these files can be found in the following trees:

Recipes files

The following are the Xen Project-specific segments from compute.rb configuration file:

def set_boot_kernel_and_trigger_reboot(flavor='default')
# only default and xen flavor is supported by this helper right now
 default_boot = 0
 current_default = nil

 # parse menu.lst, to find boot index for selected flavor
  File.open('/boot/grub/menu.lst') do |f|
  f.lines.each do |line|
   current_default = line.scan(/\d/).first.to_i if line.start_with?('default')

   if line.start_with?('title')
   if flavor.eql?('xen')
    # found boot index
    break if line.include?('Xen')
   else
    # take first non-xen kernel as default
    break unless line.include?('Xen')
   end

  default_boot += 1
  end

 end
end
when "xen"
 %w{kernel-xen xen xen-tools openvswitch-kmp-xen}.each do |pkg|
  package pkg do
   action :install
  end
 end
service "xend" do
 action :nothing
 supports :status => true, :start => true, :stop => true, :restart => true
 # restart xend only when xen kernel is already present
 only_if { %x[uname -r].include?('xen') }
end
template "/etc/xen/xend-config.sxp" do
 source "xend-config.sxp.erb"
 group "root"
 owner "root"
 mode 0644
 variables(
  :node_platform => node[:platform],
  :libvirt_migration => node[:nova]["use_migration"],
  :shared_instances => node[:nova]["use_shared_instance_storage"],
  :libvirtd_listen_tcp => node[:nova]["use_migration"] ? 1 : 0,
  :libvirtd_listen_addr => Chef::Recipe::Barclamp::Inventory.get_network_by_type(node, "admin").address
 )
 notifies :restart, "service[xend]", :delayed
end
set_boot_kernel_and_trigger_reboot('xen')