Advertisement
Guest User

Untitled

a guest
Jan 12th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. require 'rbvmomi'
  2. require 'pry'
  3. require 'json'
  4.  
  5. # Initiate connection to vSphere
  6. vim = RbVmomi::VIM.connect host:'REDACTED', user:'REDACTED', password:'REDACTED'
  7.  
  8.  
  9. dc = vim.serviceInstance.find_datacenter or fail "datacenter not found"
  10.  
  11. # What should it look like?
  12. template_object = dc.find_vm('/eng/templates/centos-6-x86_64')
  13. targetfolder = dc.vmFolder.children.first.children.find { |folder| folder.name == 'zee@puppetlabs.com' }
  14.  
  15. vm = {
  16. name: 'zeetest2',
  17. created_by: 'pizzamaster5000',
  18. template: template_object,
  19. targetfolder: targetfolder,
  20. }
  21.  
  22. #Create a config spec, e.g. what should it look like.
  23. configSpec = RbVmomi::VIM.VirtualMachineConfigSpec(
  24. annotation: JSON.pretty_generate(
  25. name: vm[:hostname],
  26. created_by: vm[:created_by],
  27. base_template: vm[:template],
  28. creation_timestamp: Time.now.utc
  29. ),
  30. )
  31.  
  32. # Create a relocate spec to tell the VM where to go.
  33. relocateSpec = RbVmomi::VIM.VirtualMachineRelocateSpec(
  34. datastore: dc.find_datastore('general2'),
  35. diskMoveType: :moveChildMostDiskBacking,
  36. pool: dc.find_vm('/eng/zee@puppetlabs.com/zeetest1').resourcePool,
  37. )
  38. # host: dc.hostFolder.children.first.host.first, #object representing current vsphere host
  39. # Option for above spec
  40.  
  41.  
  42. # Create a clone spec to actully perform the operation.
  43. cloneSpec = RbVmomi::VIM.VirtualMachineCloneSpec(
  44. location: relocateSpec,
  45. config: configSpec, # Note config spec is used here.
  46. powerOn: true,
  47. template: false
  48. # host: dc.hostFolder.children.first.host.first, #object representing current vsphere host
  49. )
  50.  
  51. vm[:template].CloneVM_Task(
  52. folder: vm[:targetfolder],
  53. name: vm[:name],
  54. spec: cloneSpec,
  55. ).wait_for_completion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement