xenserver.pp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. # == Class: nova::compute::xenserver
  2. #
  3. # Configures nova-compute to manage xen guests
  4. #
  5. # === Parameters:
  6. #
  7. # [*connection_url*]
  8. # (required) URL for connection to XenServer/Xen Cloud Platform.
  9. #
  10. # [*connection_username*]
  11. # (required) Username for connection to XenServer/Xen Cloud Platform
  12. #
  13. # [*connection_password*]
  14. # (required) Password for connection to XenServer/Xen Cloud Platform
  15. #
  16. # [*compute_driver*]
  17. # (optional) Compute driver.
  18. # Defaults to 'xenapi.XenAPIDriver'
  19. #
  20. # [*ovs_integration_bridge*]
  21. # (optional) Name of Integration Bridge used by Open vSwitch (string value)
  22. # Defaults to $::os_service_default
  23. #
  24. # [*agent_timeout*]
  25. # (optional) Number of seconds to wait for agent reply (integer value)
  26. # Defaults to $::os_service_default
  27. #
  28. # [*agent_version_timeout*]
  29. # (optional) Number of seconds to wait for agent to be fully operational (integer value)
  30. # Defaults to $::os_service_default
  31. #
  32. # [*agent_resetnetwork_timeout*]
  33. # (optional) Number of seconds to wait for agent reply to resetnetwork request (integer value)
  34. # Defaults to $::os_service_default
  35. #
  36. # [*agent_path*]
  37. # (optional) Specifies the path in which the XenAPI guest agent should be located. If the
  38. # agent is present, network configuration is not injected into the image. Used
  39. # if compute_driver=xenapi.XenAPIDriver and flat_injected=True (string value)
  40. # Defaults to $::os_service_default
  41. #
  42. # [*disable_agent*]
  43. # (optional) Disables the use of the XenAPI agent in any image regardless of what image
  44. # properties are present (boolean value).
  45. # Defaults to $::os_service_default
  46. #
  47. # [*use_agent_default*]
  48. # (optional) Determines if the XenAPI agent should be used when the image used does not
  49. # contain a hint to declare if the agent is present or not. The hint is a
  50. # glance property "xenapi_use_agent" that has the value "True" or "False". Note
  51. # that waiting for the agent when it is not present will significantly increase
  52. # server boot times. (boolean value)
  53. # Defaults to $::os_service_default
  54. #
  55. # [*login_timeout*]
  56. # (optional) Timeout in seconds for XenAPI login. (integer value)
  57. # Defaults to $::os_service_default
  58. #
  59. # [*connection_concurrent*]
  60. # {optional} Maximum number of concurrent XenAPI connections.
  61. # Defaults to $::os_service_default
  62. #
  63. # [*vhd_coalesce_poll_interval*]
  64. # (optional) The interval used for polling of coalescing vhds. (floating point value)
  65. # Defaults to $::os_service_default
  66. #
  67. # [*check_host*]
  68. # (optional) Ensure compute service is running on host XenAPI connects to. (boolean value)
  69. # Defaults to $::os_service_default
  70. #
  71. # [*vhd_coalesce_max_attempts*]
  72. # (optional) Max number of times to poll for VHD to coalesce.
  73. # Defaults to $::os_service_default
  74. #
  75. # [*sr_base_path*]
  76. # (optional) Base path to the storage repository (string value)
  77. # Defaults to $::os_service_default
  78. #
  79. # [*target_host*]
  80. # (optional) The iSCSI Target Host (string value)
  81. # Defaults to $::os_service_default
  82. #
  83. # [*target_port*]
  84. # (optional) The iSCSI Target Port, default is port 3260 (string value)
  85. # Defaults to $::os_service_default
  86. #
  87. # [*iqn_prefix*]
  88. # (optional) IQN Prefix (string value)
  89. # Defaults to $::os_service_default
  90. #
  91. # [*remap_vbd_dev*]
  92. # (optional) Used to enable the remapping of VBD dev (Works around an issue in Ubuntu
  93. # Maverick) (boolean value)
  94. # Defaults to $::os_service_default
  95. #
  96. # [*remap_vbd_dev_prefix*]
  97. # (optional) Specify prefix to remap VBD dev to (ex. /dev/xvdb -> /dev/sdb) (string value)
  98. # Defaults to $::os_service_default
  99. #
  100. # [*torrent_base_url*]
  101. # (optional) Base URL for torrent files; must contain a slash character (see RFC 1808,
  102. # step 6) (string value)
  103. # Defaults to $::os_service_default
  104. #
  105. # [*torrent_seed_chance*]
  106. # (optional) Probability that peer will become a seeder. (1.0 = 100%) (floating poin value)
  107. # Defaults to $::os_service_default
  108. #
  109. # [*torrent_seed_duration*]
  110. # (optional) Number of seconds after downloading an image via BitTorrent that it should be
  111. # seeded for other peers. (integer value)
  112. # Defaults to $::os_service_default
  113. #
  114. # [*torrent_max_last_accessed*]
  115. # (optional) Cached torrent files not accessed within this number of seconds can be reaped
  116. # (integer value)
  117. # Defaults to $::os_service_default
  118. #
  119. # [*torrent_listen_port_start*]
  120. # (optional) Beginning of port range to listen on (integer value)
  121. # Minimum value: 1
  122. # Maximum value: 65535
  123. # Defaults to $::os_service_default
  124. #
  125. # [*torrent_listen_port_end*]
  126. # (optional) End of port range to listen on (integer value)
  127. # Minimum value: 1
  128. # Maximum value: 65535
  129. # Defaults to $::os_service_default
  130. #
  131. # [*torrent_download_stall_cutoff*]
  132. # (optional) Number of seconds a download can remain at the same progress percentage w/o
  133. # being considered a stall (integer value)
  134. # Defaults to $::os_service_default
  135. #
  136. # [*torrent_max_seeder_processes_per_host*]
  137. # (optional) Maximum number of seeder processes to run concurrently within a given dom0.
  138. # (-1 = no limit) (integer value)
  139. # Defaults to $::os_service_default
  140. #
  141. # [*use_join_force*]
  142. # (optional) To use for hosts with different CPUs (boolean value)
  143. # Defaults to $::os_service_default
  144. #
  145. # [*cache_images*]
  146. # (optional) Cache glance images locally. `all` will cache all images, `some` will only
  147. # cache images that have the image_property `cache_in_nova=True`, and `none`
  148. # turns off caching entirely (string value)
  149. # Allowed values: all, some, none
  150. # Defaults to $::os_service_default
  151. #
  152. # [*image_compression_level*]
  153. # (optional) Compression level for images, e.g., 9 for gzip -9. Range is 1-9, 9 being most
  154. # compressed but most CPU intensive on dom0. (integer value)
  155. # Minimum value: 1
  156. # Maximum value: 9
  157. # Defaults to $::os_service_default
  158. #
  159. # [*default_os_type*]
  160. # (optional) Default OS type (string value)
  161. # Defaults to $::os_service_default
  162. #
  163. # [*block_device_creation_timeout*]
  164. # (optional) Time to wait for a block device to be created (integer value)
  165. # Defaults to $::os_service_default
  166. #
  167. # [*max_kernel_ramdisk_size*]
  168. # (optional) Maximum size in bytes of kernel or ramdisk images (integer value)
  169. # Defaults to $::os_service_default
  170. #
  171. # [*sr_matching_filter*]
  172. # (optional) Filter for finding the SR to be used to install guest instances on. To use
  173. # the Local Storage in default XenServer/XCP installations set this flag to
  174. # other-config:i18n-key=local-storage. To select an SR with a different
  175. # matching criteria, you could set it to other-config:my_favorite_sr=true. On
  176. # the other hand, to fall back on the Default SR, as displayed by XenCenter,
  177. # set this flag to: default-sr:true (string value)
  178. # Defaults to $::os_service_default
  179. #
  180. # [*sparse_copy*]
  181. # (optional) Whether to use sparse_copy for copying data on a resize down (False will use
  182. # standard dd). This speeds up resizes down considerably since large runs of
  183. # zeros won't have to be rsynced (boolean value)
  184. # Defaults to $::os_service_default
  185. #
  186. # [*num_vbd_unplug_retries*]
  187. # (optional) Maximum number of retries to unplug VBD. if <=0, should try once and no retry
  188. # (integer value)
  189. # Defaults to $::os_service_default
  190. #
  191. # [*torrent_images*]
  192. # (optional) Whether or not to download images via Bit Torrent. (string value)
  193. # Allowed values: all, some, none
  194. # Defaults to $::os_service_default
  195. #
  196. # [*ipxe_network_name*]
  197. # (optional) Name of network to use for booting iPXE ISOs (string value)
  198. # Defaults to $::os_service_default
  199. #
  200. # [*ipxe_boot_menu_url*]
  201. # (optional) URL to the iPXE boot menu (string value)
  202. # Defaults to $::os_service_default
  203. #
  204. # [*ipxe_mkisofs_cmd*]
  205. # (optional) Name and optionally path of the tool used for ISO image creation (string
  206. # value)
  207. # Defaults to $::os_service_default
  208. #
  209. # [*running_timeout*]
  210. # (optional) Number of seconds to wait for instance to go to running state (integer value)
  211. # Defaults to $::os_service_default
  212. #
  213. # [*vif_driver*]
  214. # (optional) The XenAPI VIF driver using XenServer Network APIs. (string value)
  215. # Defaults to $::os_service_default
  216. #
  217. # [*image_upload_handler*]
  218. # (optional) Dom0 plugin driver used to handle image uploads. (string value)
  219. # Defaults to $::os_service_default
  220. #
  221. # [*introduce_vdi_retry_wait*]
  222. # (optional) Number of seconds to wait for an SR to settle if the VDI does not exist when
  223. # first introduced (integer value)
  224. # Defaults to $::os_service_default
  225. #
  226. # DEPRECATED PARAMETERS
  227. #
  228. # [*xenapi_inject_image*]
  229. # (optional) DEPRECATED: This parameter does nothing.
  230. #
  231. # [*xenapi_connection_url*]
  232. # (optional) DEPRECATED: URL for connection to XenServer/Xen Cloud Platform.
  233. # Please use connection_url parameter.
  234. #
  235. # [*xenapi_connection_username*]
  236. # (optional) DEPRECATED: Username for connection to XenServer/Xen Cloud Platform
  237. # Please use connection_username parameter.
  238. #
  239. # [*xenapi_connection_password*]
  240. # (optional) DEPRECATED: Password for connection to XenServer/Xen Cloud Platform.
  241. # Please use connection_password parameter.
  242. #
  243. class nova::compute::xenserver(
  244. $connection_url,
  245. $connection_username,
  246. $connection_password,
  247. $compute_driver = 'xenapi.XenAPIDriver',
  248. $ovs_integration_bridge = $::os_service_default,
  249. $agent_timeout = $::os_service_default,
  250. $agent_version_timeout = $::os_service_default,
  251. $agent_resetnetwork_timeout = $::os_service_default,
  252. $agent_path = $::os_service_default,
  253. $disable_agent = $::os_service_default,
  254. $use_agent_default = $::os_service_default,
  255. $login_timeout = $::os_service_default,
  256. $connection_concurrent = $::os_service_default,
  257. $vhd_coalesce_poll_interval = $::os_service_default,
  258. $check_host = $::os_service_default,
  259. $vhd_coalesce_max_attempts = $::os_service_default,
  260. $sr_base_path = $::os_service_default,
  261. $target_host = $::os_service_default,
  262. $target_port = $::os_service_default,
  263. $iqn_prefix = $::os_service_default,
  264. $remap_vbd_dev = $::os_service_default,
  265. $remap_vbd_dev_prefix = $::os_service_default,
  266. $torrent_base_url = $::os_service_default,
  267. $torrent_seed_chance = $::os_service_default,
  268. $torrent_seed_duration = $::os_service_default,
  269. $torrent_max_last_accessed = $::os_service_default,
  270. $torrent_listen_port_start = $::os_service_default,
  271. $torrent_listen_port_end = $::os_service_default,
  272. $torrent_download_stall_cutoff = $::os_service_default,
  273. $torrent_max_seeder_processes_per_host = $::os_service_default,
  274. $use_join_force = $::os_service_default,
  275. $cache_images = $::os_service_default,
  276. $image_compression_level = $::os_service_default,
  277. $default_os_type = $::os_service_default,
  278. $block_device_creation_timeout = $::os_service_default,
  279. $max_kernel_ramdisk_size = $::os_service_default,
  280. $sr_matching_filter = $::os_service_default,
  281. $sparse_copy = $::os_service_default,
  282. $num_vbd_unplug_retries = $::os_service_default,
  283. $torrent_images = $::os_service_default,
  284. $ipxe_network_name = $::os_service_default,
  285. $ipxe_boot_menu_url = $::os_service_default,
  286. $ipxe_mkisofs_cmd = $::os_service_default,
  287. $running_timeout = $::os_service_default,
  288. $vif_driver = 'nova.virt.xenapi.vif.XenAPIOpenVswitchDriver',
  289. $image_upload_handler = $::os_service_default,
  290. $introduce_vdi_retry_wait = $::os_service_default,
  291. # DEPRECATED PARAMETERS
  292. $xenapi_inject_image = undef,
  293. $xenapi_connection_url = undef,
  294. $xenapi_connection_username = undef,
  295. $xenapi_connection_password = undef,
  296. ) {
  297. include ::nova::deps
  298. if $xenapi_inject_image != undef {
  299. warning('The xenapi_inject_image parameter is deprecated and has no effect.')
  300. }
  301. if $xenapi_connection_url {
  302. warning('The xenapi_connection_url parameter is deprecated and has no effect, please use connection_url.')
  303. }
  304. if $xenapi_connection_username {
  305. warning('The xenapi_connection_username parameter is deprecated and has no effect, please use connection_username.')
  306. }
  307. if $xenapi_connection_password {
  308. warning('The xenapi_connection_password parameter is deprecated and has no effect, please use connection_password.')
  309. }
  310. nova_config {
  311. 'DEFAULT/compute_driver': value => $compute_driver;
  312. 'xenserver/connection_url': value => $connection_url;
  313. 'xenserver/connection_username': value => $connection_username;
  314. 'xenserver/connection_password': value => $connection_password;
  315. 'xenserver/ovs_integration_bridge': value => $ovs_integration_bridge;
  316. 'xenserver/agent_timeout': value => $agent_timeout;
  317. 'xenserver/agent_version_timeout': value => $agent_version_timeout;
  318. 'xenserver/agent_resetnetwork_timeout': value => $agent_resetnetwork_timeout;
  319. 'xenserver/agent_path': value => $agent_path;
  320. 'xenserver/disable_agent': value => $disable_agent;
  321. 'xenserver/use_agent_default': value => $use_agent_default;
  322. 'xenserver/login_timeout': value => $login_timeout;
  323. 'xenserver/connection_concurrent': value => $connection_concurrent;
  324. 'xenserver/vhd_coalesce_poll_interval': value => $vhd_coalesce_poll_interval;
  325. 'xenserver/check_host': value => $check_host;
  326. 'xenserver/vhd_coalesce_max_attempts': value => $vhd_coalesce_max_attempts;
  327. 'xenserver/sr_base_path': value => $sr_base_path;
  328. 'xenserver/target_host': value => $target_host;
  329. 'xenserver/target_port': value => $target_port;
  330. 'xenserver/iqn_prefix': value => $iqn_prefix;
  331. 'xenserver/remap_vbd_dev': value => $remap_vbd_dev;
  332. 'xenserver/remap_vbd_dev_prefix': value => $remap_vbd_dev_prefix;
  333. 'xenserver/torrent_base_url': value => $torrent_base_url;
  334. 'xenserver/torrent_seed_chance': value => $torrent_seed_chance;
  335. 'xenserver/torrent_seed_duration': value => $torrent_seed_duration;
  336. 'xenserver/torrent_max_last_accessed': value => $torrent_max_last_accessed;
  337. 'xenserver/torrent_listen_port_start': value => $torrent_listen_port_start;
  338. 'xenserver/torrent_listen_port_end': value => $torrent_listen_port_end;
  339. 'xenserver/torrent_download_stall_cutoff': value => $torrent_download_stall_cutoff;
  340. 'xenserver/torrent_max_seeder_processes_per_host': value => $torrent_max_seeder_processes_per_host;
  341. 'xenserver/use_join_force': value => $use_join_force;
  342. 'xenserver/cache_images': value => $cache_images;
  343. 'xenserver/image_compression_level': value => $image_compression_level;
  344. 'xenserver/default_os_type': value => $default_os_type;
  345. 'xenserver/block_device_creation_timeout': value => $block_device_creation_timeout;
  346. 'xenserver/max_kernel_ramdisk_size': value => $max_kernel_ramdisk_size;
  347. 'xenserver/sr_matching_filter': value => $sr_matching_filter;
  348. 'xenserver/sparse_copy': value => $sparse_copy;
  349. 'xenserver/num_vbd_unplug_retries': value => $num_vbd_unplug_retries;
  350. 'xenserver/torrent_images': value => $torrent_images;
  351. 'xenserver/ipxe_network_name': value => $ipxe_network_name;
  352. 'xenserver/ipxe_boot_menu_url': value => $ipxe_boot_menu_url;
  353. 'xenserver/ipxe_mkisofs_cmd': value => $ipxe_mkisofs_cmd;
  354. 'xenserver/running_timeout': value => $running_timeout;
  355. 'xenserver/vif_driver': value => $vif_driver;
  356. 'xenserver/image_upload_handler': value => $image_upload_handler;
  357. 'xenserver/introduce_vdi_retry_wait': value => $introduce_vdi_retry_wait;
  358. }
  359. ensure_packages(['python-pip'])
  360. package { 'xenapi':
  361. ensure => present,
  362. provider => pip,
  363. tag => ['openstack', 'nova-support-package'],
  364. }
  365. Package['python-pip'] -> Package['xenapi']
  366. }