Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- # tasks/azure.yml
- #
- ---
- - name: SET_FACT | add_data_disk_stop_instance initially false
- set_fact:
- add_data_disk_stop_instance: false
- - name: AZURE_RM_MANAGED_DISK_FACTS | Collect facts on managed disks
- local_action:
- module: azure_rm_managed_disk_facts
- ad_user: "{{ add_data_disk_azure_ad_user }}"
- password: "{{ add_data_disk_azure_ad_password }}"
- subscription_id: "{{ add_data_disk_azure_subscription_id }}"
- name: "{{ add_data_disk_azure_instance + '-' + item.mount.replace('/', '') }}"
- resource_group: "{{ add_data_disk_azure_resource_group }}"
- with_items: "{{ add_data_disk }}"
- register: task_result
- - name: SET_FACT | add_data_disk_stop_instance
- set_fact:
- add_data_disk_stop_instance: true
- with_items: "{{ task_result.results }}"
- when: (
- ( item.ansible_facts.azure_managed_disk[0] is defined )
- and
- ( item.ansible_facts.azure_managed_disk[0].disk_size_gb != item.item.size_gb )
- )
- - name: FAIL | when attempting to shrink a disk
- fail:
- msg: Shrinking data disks is not supported
- with_items: "{{ task_result.results }}"
- when: (
- ( item.ansible_facts.azure_managed_disk[0] is defined )
- and
- ( item.ansible_facts.azure_managed_disk[0].disk_size_gb > item.item.size_gb )
- )
- - name: AZURE_RM_VIRTUALMACHINE | Stop and deallocate the instance
- local_action:
- module: azure_rm_virtualmachine
- ad_user: "{{ add_data_disk_azure_ad_user }}"
- password: "{{ add_data_disk_azure_ad_password }}"
- subscription_id: "{{ add_data_disk_azure_subscription_id }}"
- name: "{{ add_data_disk_azure_instance }}"
- resource_group: "{{ add_data_disk_azure_resource_group }}"
- allocated: false
- when: add_data_disk_stop_instance
- - name: AZURE_RM_MANAGED_DISK | Create/Update the disk(s)
- local_action:
- module: azure_rm_managed_disk
- ad_user: "{{ add_data_disk_azure_ad_user }}"
- password: "{{ add_data_disk_azure_ad_password }}"
- subscription_id: "{{ add_data_disk_azure_subscription_id }}"
- name: "{{ add_data_disk_azure_instance + '-' + item.mount.replace('/', '') }}"
- resource_group: "{{ add_data_disk_azure_resource_group }}"
- disk_size_gb: "{{ item.size_gb }}"
- managed_by: "{{ add_data_disk_azure_instance }}"
- state: present
- with_items: "{{ add_data_disk }}"
- - name: AZURE_RM_VIRTUALMACHINE | Ensure the instance is started
- local_action:
- module: azure_rm_virtualmachine
- ad_user: "{{ add_data_disk_azure_ad_user }}"
- password: "{{ add_data_disk_azure_ad_password }}"
- subscription_id: "{{ add_data_disk_azure_subscription_id }}"
- name: "{{ add_data_disk_azure_instance }}"
- resource_group: "{{ add_data_disk_azure_resource_group }}"
- allocated: true
- register: task_result
- - name: WAIT_FOR_CONNECTION | Wait for connection to be re-established
- wait_for_connection:
- when: task_result.changed
- #
- # tasks/linux.yml
- #
- ---
- ############# Steps to recognize new disk space
- - name: FIND | Register SCSI hosts
- become: true
- become_user: root
- find:
- path: /sys/class/scsi_host
- file_type: any
- patterns: 'host*'
- register: task_result
- - name: SHELL | Detect new disks
- become: true
- become_user: root
- shell: '/bin/echo "- - -" > {{ item.path }}/scan'
- with_items: "{{ task_result.files }}"
- changed_when: false
- - name: SETUP | Run setup again to get information about attached disks
- setup:
- - name: SET_FACT | add_data_disk_device_list
- set_fact:
- add_data_disk_device_list: "{{ ( add_data_disk_device_list | default([]) ) + [item] }}"
- with_items: "{{ ansible_devices }}"
- when: (
- ( add_data_disk_platform == "azure" and "sd" in item and "sda" not in item and "sdb" not in item )
- or
- ( add_data_disk_platform != "azure" and "sd" in item and "sda" not in item )
- )
- - name: SET_FACT | add_data_disk_device_list
- set_fact:
- add_data_disk_device_list: "{{ add_data_disk_device_list | sort }}"
- - name: DEBUG | add_data_disk_device_list
- debug:
- var: add_data_disk_device_list
- verbosity: 1
- - name: DEBUG | add_data_disk passed into role
- debug:
- var: add_data_disk
- verbosity: 1
- - name: SHELL | Detect addtional disk space
- become: true
- become_user: root
- shell: '/bin/echo 1 > /sys/block/{{ item }}/device/rescan'
- with_items: "{{ add_data_disk_device_list }}"
- changed_when: false
- - name: DEBUG | with_together
- debug:
- msg: "label is: {{ item.0.label }}, device is: {{ item.1 }}"
- verbosity: 1
- with_together:
- - "{{ add_data_disk }}"
- - "{{ add_data_disk_device_list | sort }}"
- ################## Partition New Disks
- - name: PARTED | Partition new disks
- become: true
- become_user: root
- parted:
- device: '/dev/{{ item.1 }}'
- label: "{{ item.0.label }}"
- number: 1
- state: present
- part_start: '0%'
- part_end: '100%'
- with_together:
- - "{{ add_data_disk }}"
- - "{{ add_data_disk_device_list | sort }}"
- ################# Check/Handle disk that has been expanded
- - name: PARTED | Inspect disks to see if they have been expanded
- become: true
- become_user: root
- parted:
- device: '/dev/{{ item.1 }}'
- label: "{{ item.0.label }}"
- state: info
- with_together:
- - "{{ add_data_disk }}"
- - "{{ add_data_disk_device_list | sort }}"
- register: task_result
- - name: DEBUG | item.disk.size == item.partitions[0].end
- debug:
- var: item.disk.size == item.partitions[0].end
- verbosity: 1
- with_items: "{{ task_result.results }}"
- - name: MOUNT | Unmount filesystem if new disk space was added
- become: true
- become_user: root
- mount:
- path: "{{ item.1.mount }}"
- state: unmounted
- when: 'item.0.disk.size != item.0.partitions[0].end'
- with_together:
- - "{{ task_result.results | sort( attribute='item' ) }}"
- - "{{ add_data_disk }}"
- - name: SHELL | Expand partitions if new disk space was added
- become: true
- become_user: root
- shell: yes | parted -s /dev/{{ item.1 }} resizepart 1 100%
- when: 'item.0.disk.size != item.0.partitions[0].end'
- with_together:
- - "{{ task_result.results | sort( attribute='item' ) }}"
- - "{{ add_data_disk_device_list | sort }}"
- ######### Create file system
- - name: FILESYSTEM | Create an ext4 filesystem on each disk
- become: true
- become_user: root
- filesystem:
- fstype: ext4
- dev: "/dev/{{ item }}1"
- with_items: "{{ add_data_disk_device_list }}"
- - name: FILE | Create a mount point for the filesystem
- become: true
- become_user: root
- file:
- path: "{{ item.mount }}"
- owner: "{{ item.owner }}"
- group: "{{ item.group }}"
- mode: "{{ item.mode }}"
- state: directory
- with_items: "{{ add_data_disk }}"
- - name: MOUNT | mount the filesystem
- become: true
- become_user: root
- mount:
- path: "{{ item.0.mount }}"
- src: "/dev/{{ item.1 }}1"
- fstype: ext4
- opts: defaults
- passno: 2
- dump: 1
- state: mounted
- with_together:
- - "{{ add_data_disk }}"
- - "{{ add_data_disk_device_list | sort }}"
- - name: FILESYSTEM | Grow the filesystem
- become: true
- become_user: root
- filesystem:
- fstype: ext4
- dev: "/dev/{{ item }}1"
- resizefs: true
- with_items: "{{ add_data_disk_device_list }}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement