Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. ---
  2. - name: ESXi single clone vm demo
  3. hosts: all
  4. gather_facts: no
  5. vars:
  6. vm_password: !vault |
  7. $ANSIBLE_VAULT;1.1;AES256
  8. (snip)
  9. tasks:
  10. - name: Get datastore infomation
  11. vmware_datastore_facts:
  12. hostname: "{{ vm_hostname }}"
  13. username: "{{ vm_username }}"
  14. password: "{{ vm_password }}"
  15. validate_certs: no
  16. datacenter: ha-datacenter
  17. delegate_to: localhost
  18. register: datastore_result
  19.  
  20. - name: Set datastore path variable
  21. set_fact:
  22. datastore_path: "{{ item.url }}"
  23. loop: "{{ datastore_result.datastores }}"
  24. when: item.name == datastore
  25.  
  26. - block:
  27. - name: Create a directory to store virtual machines
  28. file:
  29. path: "{{ datastore_path }}/{{ item.name }}"
  30. state: directory
  31. loop: "{{ clone_vms }}"
  32.  
  33. - name: Copy vmdk file(Multiple file support)
  34. shell: >-
  35. for vmdk in $(find {{ datastore_path }}/{{ source_vm }} -name "*.vmdk" | grep -v flat | awk -F / '{print $(NF)}') ; do
  36. rename_vmdk=`echo $vmdk | sed -e "s/{{ source_vm}}\(.*\)/{{ item.name }}\1/g"`
  37. vmkfstools -i {{ datastore_path }}/{{ source_vm }}/$vmdk -d {{ disk_type }} {{ datastore_path }}/{{ item.name }}/$rename_vmdk
  38. done
  39. loop: "{{ clone_vms }}"
  40.  
  41. - name: Copy vmx file
  42. copy:
  43. src: "{{ datastore_path }}/{{ source_vm }}/{{ source_vm }}.vmx"
  44. dest: "{{ datastore_path }}/{{ item.name }}/{{ item.name }}.vmx"
  45. remote_src: yes
  46. loop: "{{ clone_vms }}"
  47.  
  48. - name: Replace vmx file parameter
  49. replace:
  50. path: "{{ datastore_path }}/{{ item.name }}/{{ item.name }}.vmx"
  51. regexp: "{{ source_vm }}(\\.vmdk|\\.nvram|\"$)"
  52. replace: "{{ item.name }}\\1"
  53. loop: "{{ clone_vms }}"
  54.  
  55. - name: Register VM to inventory
  56. vmware_guest_register_operation:
  57. hostname: "{{ vm_hostname }}"
  58. username: "{{ vm_username }}"
  59. password: "{{ vm_password }}"
  60. validate_certs: no
  61. esxi_hostname: "{{ esxi_hostname }}"
  62. name: "{{ item.name }}"
  63. path: "[NFS] {{ item.name }}/{{ item.name }}.vmx"
  64. state: present
  65. delegate_to: localhost
  66. loop: "{{ clone_vms }}"
  67.  
  68. - name: VM power operation
  69. vmware_guest_powered_on_operation_question:
  70. hostname: "{{ vm_hostname }}"
  71. username: "{{ vm_username }}"
  72. password: "{{ vm_password }}"
  73. validate_certs: no
  74. name: "{{ item.name }}"
  75. state: poweredon
  76. delegate_to: localhost
  77. loop: "{{ clone_vms }}"
  78.  
  79. when: datastore_path is defined
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement