puppet-nova/manifests/compute/xenserver.pp

338 lines
15 KiB
Puppet

# == Class: nova::compute::xenserver
#
# Configures nova-compute to manage xen guests
#
# === Parameters:
#
# [*connection_url*]
# (required) URL for connection to XenServer/Xen Cloud Platform.
#
# [*connection_username*]
# (required) Username for connection to XenServer/Xen Cloud Platform
#
# [*connection_password*]
# (required) Password for connection to XenServer/Xen Cloud Platform
#
# [*compute_driver*]
# (optional) Compute driver.
# Defaults to 'xenapi.XenAPIDriver'
#
# [*ovs_integration_bridge*]
# (optional) Name of Integration Bridge used by Open vSwitch (string value)
# Defaults to $::os_service_default
#
# [*agent_timeout*]
# (optional) Number of seconds to wait for agent reply (integer value)
# Defaults to $::os_service_default
#
# [*agent_version_timeout*]
# (optional) Number of seconds to wait for agent to be fully operational (integer value)
# Defaults to $::os_service_default
#
# [*agent_resetnetwork_timeout*]
# (optional) Number of seconds to wait for agent reply to resetnetwork request (integer value)
# Defaults to $::os_service_default
#
# [*agent_path*]
# (optional) Specifies the path in which the XenAPI guest agent should be located. If the
# agent is present, network configuration is not injected into the image. Used
# if compute_driver=xenapi.XenAPIDriver and flat_injected=True (string value)
# Defaults to $::os_service_default
#
# [*disable_agent*]
# (optional) Disables the use of the XenAPI agent in any image regardless of what image
# properties are present (boolean value).
# Defaults to $::os_service_default
#
# [*use_agent_default*]
# (optional) Determines if the XenAPI agent should be used when the image used does not
# contain a hint to declare if the agent is present or not. The hint is a
# glance property "xenapi_use_agent" that has the value "True" or "False". Note
# that waiting for the agent when it is not present will significantly increase
# server boot times. (boolean value)
# Defaults to $::os_service_default
#
# [*login_timeout*]
# (optional) Timeout in seconds for XenAPI login. (integer value)
# Defaults to $::os_service_default
#
# [*connection_concurrent*]
# {optional} Maximum number of concurrent XenAPI connections.
# Defaults to $::os_service_default
#
# [*vhd_coalesce_poll_interval*]
# (optional) The interval used for polling of coalescing vhds. (floating point value)
# Defaults to $::os_service_default
#
# [*check_host*]
# (optional) Ensure compute service is running on host XenAPI connects to. (boolean value)
# Defaults to $::os_service_default
#
# [*vhd_coalesce_max_attempts*]
# (optional) Max number of times to poll for VHD to coalesce.
# Defaults to $::os_service_default
#
# [*sr_base_path*]
# (optional) Base path to the storage repository (string value)
# Defaults to $::os_service_default
#
# [*target_host*]
# (optional) The iSCSI Target Host (string value)
# Defaults to $::os_service_default
#
# [*target_port*]
# (optional) The iSCSI Target Port, default is port 3260 (string value)
# Defaults to $::os_service_default
#
# [*iqn_prefix*]
# (optional) IQN Prefix (string value)
# Defaults to $::os_service_default
#
# [*remap_vbd_dev*]
# (optional) Used to enable the remapping of VBD dev (Works around an issue in Ubuntu
# Maverick) (boolean value)
# Defaults to $::os_service_default
#
# [*remap_vbd_dev_prefix*]
# (optional) Specify prefix to remap VBD dev to (ex. /dev/xvdb -> /dev/sdb) (string value)
# Defaults to $::os_service_default
#
# [*torrent_base_url*]
# (optional) Base URL for torrent files; must contain a slash character (see RFC 1808,
# step 6) (string value)
# Defaults to $::os_service_default
#
# [*torrent_seed_chance*]
# (optional) Probability that peer will become a seeder. (1.0 = 100%) (floating point value)
# Defaults to $::os_service_default
#
# [*torrent_seed_duration*]
# (optional) Number of seconds after downloading an image via BitTorrent that it should be
# seeded for other peers. (integer value)
# Defaults to $::os_service_default
#
# [*torrent_max_last_accessed*]
# (optional) Cached torrent files not accessed within this number of seconds can be reaped
# (integer value)
# Defaults to $::os_service_default
#
# [*torrent_listen_port_start*]
# (optional) Beginning of port range to listen on (integer value)
# Minimum value: 1
# Maximum value: 65535
# Defaults to $::os_service_default
#
# [*torrent_listen_port_end*]
# (optional) End of port range to listen on (integer value)
# Minimum value: 1
# Maximum value: 65535
# Defaults to $::os_service_default
#
# [*torrent_download_stall_cutoff*]
# (optional) Number of seconds a download can remain at the same progress percentage w/o
# being considered a stall (integer value)
# Defaults to $::os_service_default
#
# [*torrent_max_seeder_processes_per_host*]
# (optional) Maximum number of seeder processes to run concurrently within a given dom0.
# (-1 = no limit) (integer value)
# Defaults to $::os_service_default
#
# [*use_join_force*]
# (optional) To use for hosts with different CPUs (boolean value)
# Defaults to $::os_service_default
#
# [*cache_images*]
# (optional) Cache glance images locally. `all` will cache all images, `some` will only
# cache images that have the image_property `cache_in_nova=True`, and `none`
# turns off caching entirely (string value)
# Allowed values: all, some, none
# Defaults to $::os_service_default
#
# [*image_compression_level*]
# (optional) Compression level for images, e.g., 9 for gzip -9. Range is 1-9, 9 being most
# compressed but most CPU intensive on dom0. (integer value)
# Minimum value: 1
# Maximum value: 9
# Defaults to $::os_service_default
#
# [*default_os_type*]
# (optional) Default OS type (string value)
# Defaults to $::os_service_default
#
# [*block_device_creation_timeout*]
# (optional) Time to wait for a block device to be created (integer value)
# Defaults to $::os_service_default
#
# [*max_kernel_ramdisk_size*]
# (optional) Maximum size in bytes of kernel or ramdisk images (integer value)
# Defaults to $::os_service_default
#
# [*sr_matching_filter*]
# (optional) Filter for finding the SR to be used to install guest instances on. To use
# the Local Storage in default XenServer/XCP installations set this flag to
# other-config:i18n-key=local-storage. To select an SR with a different
# matching criteria, you could set it to other-config:my_favorite_sr=true. On
# the other hand, to fall back on the Default SR, as displayed by XenCenter,
# set this flag to: default-sr:true (string value)
# Defaults to $::os_service_default
#
# [*sparse_copy*]
# (optional) Whether to use sparse_copy for copying data on a resize down (False will use
# standard dd). This speeds up resizes down considerably since large runs of
# zeros won't have to be rsynced (boolean value)
# Defaults to $::os_service_default
#
# [*num_vbd_unplug_retries*]
# (optional) Maximum number of retries to unplug VBD. if <=0, should try once and no retry
# (integer value)
# Defaults to $::os_service_default
#
# [*torrent_images*]
# (optional) Whether or not to download images via Bit Torrent. (string value)
# Allowed values: all, some, none
# Defaults to $::os_service_default
#
# [*ipxe_network_name*]
# (optional) Name of network to use for booting iPXE ISOs (string value)
# Defaults to $::os_service_default
#
# [*ipxe_boot_menu_url*]
# (optional) URL to the iPXE boot menu (string value)
# Defaults to $::os_service_default
#
# [*ipxe_mkisofs_cmd*]
# (optional) Name and optionally path of the tool used for ISO image creation (string
# value)
# Defaults to $::os_service_default
#
# [*running_timeout*]
# (optional) Number of seconds to wait for instance to go to running state (integer value)
# Defaults to $::os_service_default
#
# [*vif_driver*]
# (optional) The XenAPI VIF driver using XenServer Network APIs. (string value)
# Defaults to $::os_service_default
#
# [*image_upload_handler*]
# (optional) Dom0 plugin driver used to handle image uploads. (string value)
# Defaults to $::os_service_default
#
# [*introduce_vdi_retry_wait*]
# (optional) Number of seconds to wait for an SR to settle if the VDI does not exist when
# first introduced (integer value)
# Defaults to $::os_service_default
#
class nova::compute::xenserver(
$connection_url,
$connection_username,
$connection_password,
$compute_driver = 'xenapi.XenAPIDriver',
$ovs_integration_bridge = $::os_service_default,
$agent_timeout = $::os_service_default,
$agent_version_timeout = $::os_service_default,
$agent_resetnetwork_timeout = $::os_service_default,
$agent_path = $::os_service_default,
$disable_agent = $::os_service_default,
$use_agent_default = $::os_service_default,
$login_timeout = $::os_service_default,
$connection_concurrent = $::os_service_default,
$vhd_coalesce_poll_interval = $::os_service_default,
$check_host = $::os_service_default,
$vhd_coalesce_max_attempts = $::os_service_default,
$sr_base_path = $::os_service_default,
$target_host = $::os_service_default,
$target_port = $::os_service_default,
$iqn_prefix = $::os_service_default,
$remap_vbd_dev = $::os_service_default,
$remap_vbd_dev_prefix = $::os_service_default,
$torrent_base_url = $::os_service_default,
$torrent_seed_chance = $::os_service_default,
$torrent_seed_duration = $::os_service_default,
$torrent_max_last_accessed = $::os_service_default,
$torrent_listen_port_start = $::os_service_default,
$torrent_listen_port_end = $::os_service_default,
$torrent_download_stall_cutoff = $::os_service_default,
$torrent_max_seeder_processes_per_host = $::os_service_default,
$use_join_force = $::os_service_default,
$cache_images = $::os_service_default,
$image_compression_level = $::os_service_default,
$default_os_type = $::os_service_default,
$block_device_creation_timeout = $::os_service_default,
$max_kernel_ramdisk_size = $::os_service_default,
$sr_matching_filter = $::os_service_default,
$sparse_copy = $::os_service_default,
$num_vbd_unplug_retries = $::os_service_default,
$torrent_images = $::os_service_default,
$ipxe_network_name = $::os_service_default,
$ipxe_boot_menu_url = $::os_service_default,
$ipxe_mkisofs_cmd = $::os_service_default,
$running_timeout = $::os_service_default,
$vif_driver = 'nova.virt.xenapi.vif.XenAPIOpenVswitchDriver',
$image_upload_handler = $::os_service_default,
$introduce_vdi_retry_wait = $::os_service_default,
) {
include nova::deps
nova_config {
'DEFAULT/compute_driver': value => $compute_driver;
'xenserver/connection_url': value => $connection_url;
'xenserver/connection_username': value => $connection_username;
'xenserver/connection_password': value => $connection_password;
'xenserver/ovs_integration_bridge': value => $ovs_integration_bridge;
'xenserver/agent_timeout': value => $agent_timeout;
'xenserver/agent_version_timeout': value => $agent_version_timeout;
'xenserver/agent_resetnetwork_timeout': value => $agent_resetnetwork_timeout;
'xenserver/agent_path': value => $agent_path;
'xenserver/disable_agent': value => $disable_agent;
'xenserver/use_agent_default': value => $use_agent_default;
'xenserver/login_timeout': value => $login_timeout;
'xenserver/connection_concurrent': value => $connection_concurrent;
'xenserver/vhd_coalesce_poll_interval': value => $vhd_coalesce_poll_interval;
'xenserver/check_host': value => $check_host;
'xenserver/vhd_coalesce_max_attempts': value => $vhd_coalesce_max_attempts;
'xenserver/sr_base_path': value => $sr_base_path;
'xenserver/target_host': value => $target_host;
'xenserver/target_port': value => $target_port;
'xenserver/iqn_prefix': value => $iqn_prefix;
'xenserver/remap_vbd_dev': value => $remap_vbd_dev;
'xenserver/remap_vbd_dev_prefix': value => $remap_vbd_dev_prefix;
'xenserver/torrent_base_url': value => $torrent_base_url;
'xenserver/torrent_seed_chance': value => $torrent_seed_chance;
'xenserver/torrent_seed_duration': value => $torrent_seed_duration;
'xenserver/torrent_max_last_accessed': value => $torrent_max_last_accessed;
'xenserver/torrent_listen_port_start': value => $torrent_listen_port_start;
'xenserver/torrent_listen_port_end': value => $torrent_listen_port_end;
'xenserver/torrent_download_stall_cutoff': value => $torrent_download_stall_cutoff;
'xenserver/torrent_max_seeder_processes_per_host': value => $torrent_max_seeder_processes_per_host;
'xenserver/use_join_force': value => $use_join_force;
'xenserver/cache_images': value => $cache_images;
'xenserver/image_compression_level': value => $image_compression_level;
'xenserver/default_os_type': value => $default_os_type;
'xenserver/block_device_creation_timeout': value => $block_device_creation_timeout;
'xenserver/max_kernel_ramdisk_size': value => $max_kernel_ramdisk_size;
'xenserver/sr_matching_filter': value => $sr_matching_filter;
'xenserver/sparse_copy': value => $sparse_copy;
'xenserver/num_vbd_unplug_retries': value => $num_vbd_unplug_retries;
'xenserver/torrent_images': value => $torrent_images;
'xenserver/ipxe_network_name': value => $ipxe_network_name;
'xenserver/ipxe_boot_menu_url': value => $ipxe_boot_menu_url;
'xenserver/ipxe_mkisofs_cmd': value => $ipxe_mkisofs_cmd;
'xenserver/running_timeout': value => $running_timeout;
'xenserver/vif_driver': value => $vif_driver;
'xenserver/image_upload_handler': value => $image_upload_handler;
'xenserver/introduce_vdi_retry_wait': value => $introduce_vdi_retry_wait;
}
ensure_packages(['python-pip'])
package { 'xenapi':
ensure => present,
provider => pip,
tag => ['openstack', 'nova-support-package'],
}
Package['python-pip'] -> Package['xenapi']
}