OpenStack Configuration Example

From Xen
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 portions 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')