Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.19 KB | None | 0 0
  1. #
  2. # tasks/azure.yml
  3. #
  4.  
  5. ---
  6.  
  7. - name: SET_FACT | add_data_disk_stop_instance initially false
  8. set_fact:
  9. add_data_disk_stop_instance: false
  10.  
  11. - name: AZURE_RM_MANAGED_DISK_FACTS | Collect facts on managed disks
  12. local_action:
  13. module: azure_rm_managed_disk_facts
  14. ad_user: "{{ add_data_disk_azure_ad_user }}"
  15. password: "{{ add_data_disk_azure_ad_password }}"
  16. subscription_id: "{{ add_data_disk_azure_subscription_id }}"
  17. name: "{{ add_data_disk_azure_instance + '-' + item.mount.replace('/', '') }}"
  18. resource_group: "{{ add_data_disk_azure_resource_group }}"
  19. with_items: "{{ add_data_disk }}"
  20. register: task_result
  21.  
  22. - name: SET_FACT | add_data_disk_stop_instance
  23. set_fact:
  24. add_data_disk_stop_instance: true
  25. with_items: "{{ task_result.results }}"
  26. when: (
  27. ( item.ansible_facts.azure_managed_disk[0] is defined )
  28. and
  29. ( item.ansible_facts.azure_managed_disk[0].disk_size_gb != item.item.size_gb )
  30. )
  31.  
  32. - name: FAIL | when attempting to shrink a disk
  33. fail:
  34. msg: Shrinking data disks is not supported
  35. with_items: "{{ task_result.results }}"
  36. when: (
  37. ( item.ansible_facts.azure_managed_disk[0] is defined )
  38. and
  39. ( item.ansible_facts.azure_managed_disk[0].disk_size_gb > item.item.size_gb )
  40. )
  41.  
  42. - name: AZURE_RM_VIRTUALMACHINE | Stop and deallocate the instance
  43. local_action:
  44. module: azure_rm_virtualmachine
  45. ad_user: "{{ add_data_disk_azure_ad_user }}"
  46. password: "{{ add_data_disk_azure_ad_password }}"
  47. subscription_id: "{{ add_data_disk_azure_subscription_id }}"
  48. name: "{{ add_data_disk_azure_instance }}"
  49. resource_group: "{{ add_data_disk_azure_resource_group }}"
  50. allocated: false
  51. when: add_data_disk_stop_instance
  52.  
  53. - name: AZURE_RM_MANAGED_DISK | Create/Update the disk(s)
  54. local_action:
  55. module: azure_rm_managed_disk
  56. ad_user: "{{ add_data_disk_azure_ad_user }}"
  57. password: "{{ add_data_disk_azure_ad_password }}"
  58. subscription_id: "{{ add_data_disk_azure_subscription_id }}"
  59. name: "{{ add_data_disk_azure_instance + '-' + item.mount.replace('/', '') }}"
  60. resource_group: "{{ add_data_disk_azure_resource_group }}"
  61. disk_size_gb: "{{ item.size_gb }}"
  62. managed_by: "{{ add_data_disk_azure_instance }}"
  63. state: present
  64. with_items: "{{ add_data_disk }}"
  65.  
  66. - name: AZURE_RM_VIRTUALMACHINE | Ensure the instance is started
  67. local_action:
  68. module: azure_rm_virtualmachine
  69. ad_user: "{{ add_data_disk_azure_ad_user }}"
  70. password: "{{ add_data_disk_azure_ad_password }}"
  71. subscription_id: "{{ add_data_disk_azure_subscription_id }}"
  72. name: "{{ add_data_disk_azure_instance }}"
  73. resource_group: "{{ add_data_disk_azure_resource_group }}"
  74. allocated: true
  75. register: task_result
  76.  
  77. - name: WAIT_FOR_CONNECTION | Wait for connection to be re-established
  78. wait_for_connection:
  79. when: task_result.changed
  80.  
  81.  
  82. #
  83. # tasks/linux.yml
  84. #
  85. ---
  86.  
  87. ############# Steps to recognize new disk space
  88.  
  89. - name: FIND | Register SCSI hosts
  90. become: true
  91. become_user: root
  92. find:
  93. path: /sys/class/scsi_host
  94. file_type: any
  95. patterns: 'host*'
  96. register: task_result
  97.  
  98. - name: SHELL | Detect new disks
  99. become: true
  100. become_user: root
  101. shell: '/bin/echo "- - -" > {{ item.path }}/scan'
  102. with_items: "{{ task_result.files }}"
  103. changed_when: false
  104.  
  105. - name: SETUP | Run setup again to get information about attached disks
  106. setup:
  107.  
  108. - name: SET_FACT | add_data_disk_device_list
  109. set_fact:
  110. add_data_disk_device_list: "{{ ( add_data_disk_device_list | default([]) ) + [item] }}"
  111. with_items: "{{ ansible_devices }}"
  112. when: (
  113. ( add_data_disk_platform == "azure" and "sd" in item and "sda" not in item and "sdb" not in item )
  114. or
  115. ( add_data_disk_platform != "azure" and "sd" in item and "sda" not in item )
  116. )
  117.  
  118. - name: SET_FACT | add_data_disk_device_list
  119. set_fact:
  120. add_data_disk_device_list: "{{ add_data_disk_device_list | sort }}"
  121.  
  122. - name: DEBUG | add_data_disk_device_list
  123. debug:
  124. var: add_data_disk_device_list
  125. verbosity: 1
  126.  
  127. - name: DEBUG | add_data_disk passed into role
  128. debug:
  129. var: add_data_disk
  130. verbosity: 1
  131.  
  132. - name: SHELL | Detect addtional disk space
  133. become: true
  134. become_user: root
  135. shell: '/bin/echo 1 > /sys/block/{{ item }}/device/rescan'
  136. with_items: "{{ add_data_disk_device_list }}"
  137. changed_when: false
  138.  
  139. - name: DEBUG | with_together
  140. debug:
  141. msg: "label is: {{ item.0.label }}, device is: {{ item.1 }}"
  142. verbosity: 1
  143. with_together:
  144. - "{{ add_data_disk }}"
  145. - "{{ add_data_disk_device_list | sort }}"
  146.  
  147. ################## Partition New Disks
  148.  
  149. - name: PARTED | Partition new disks
  150. become: true
  151. become_user: root
  152. parted:
  153. device: '/dev/{{ item.1 }}'
  154. label: "{{ item.0.label }}"
  155. number: 1
  156. state: present
  157. part_start: '0%'
  158. part_end: '100%'
  159. with_together:
  160. - "{{ add_data_disk }}"
  161. - "{{ add_data_disk_device_list | sort }}"
  162.  
  163. ################# Check/Handle disk that has been expanded
  164. - name: PARTED | Inspect disks to see if they have been expanded
  165. become: true
  166. become_user: root
  167. parted:
  168. device: '/dev/{{ item.1 }}'
  169. label: "{{ item.0.label }}"
  170. state: info
  171. with_together:
  172. - "{{ add_data_disk }}"
  173. - "{{ add_data_disk_device_list | sort }}"
  174. register: task_result
  175.  
  176. - name: DEBUG | item.disk.size == item.partitions[0].end
  177. debug:
  178. var: item.disk.size == item.partitions[0].end
  179. verbosity: 1
  180. with_items: "{{ task_result.results }}"
  181.  
  182. - name: MOUNT | Unmount filesystem if new disk space was added
  183. become: true
  184. become_user: root
  185. mount:
  186. path: "{{ item.1.mount }}"
  187. state: unmounted
  188. when: 'item.0.disk.size != item.0.partitions[0].end'
  189. with_together:
  190. - "{{ task_result.results | sort( attribute='item' ) }}"
  191. - "{{ add_data_disk }}"
  192.  
  193. - name: SHELL | Expand partitions if new disk space was added
  194. become: true
  195. become_user: root
  196. shell: yes | parted -s /dev/{{ item.1 }} resizepart 1 100%
  197. when: 'item.0.disk.size != item.0.partitions[0].end'
  198. with_together:
  199. - "{{ task_result.results | sort( attribute='item' ) }}"
  200. - "{{ add_data_disk_device_list | sort }}"
  201.  
  202. ######### Create file system
  203. - name: FILESYSTEM | Create an ext4 filesystem on each disk
  204. become: true
  205. become_user: root
  206. filesystem:
  207. fstype: ext4
  208. dev: "/dev/{{ item }}1"
  209. with_items: "{{ add_data_disk_device_list }}"
  210.  
  211. - name: FILE | Create a mount point for the filesystem
  212. become: true
  213. become_user: root
  214. file:
  215. path: "{{ item.mount }}"
  216. owner: "{{ item.owner }}"
  217. group: "{{ item.group }}"
  218. mode: "{{ item.mode }}"
  219. state: directory
  220. with_items: "{{ add_data_disk }}"
  221.  
  222. - name: MOUNT | mount the filesystem
  223. become: true
  224. become_user: root
  225. mount:
  226. path: "{{ item.0.mount }}"
  227. src: "/dev/{{ item.1 }}1"
  228. fstype: ext4
  229. opts: defaults
  230. passno: 2
  231. dump: 1
  232. state: mounted
  233. with_together:
  234. - "{{ add_data_disk }}"
  235. - "{{ add_data_disk_device_list | sort }}"
  236.  
  237. - name: FILESYSTEM | Grow the filesystem
  238. become: true
  239. become_user: root
  240. filesystem:
  241. fstype: ext4
  242. dev: "/dev/{{ item }}1"
  243. resizefs: true
  244. with_items: "{{ add_data_disk_device_list }}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement