mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
#30142:Enable attach data disk to existing VM or detach it from VM (#32711)
* disk can be mounted to vm * add version added * fix lint * Fix some mirrors * fix lint * remove trailing space * fix as review comment * fix yaml * fix * fix * Minor update to doc on unmounting disk from VM
This commit is contained in:
parent
8c6d823963
commit
4d6c28f8c3
3 changed files with 355 additions and 111 deletions
|
@ -3,21 +3,18 @@
|
|||
managed_disk1: "{{ resource_group | hash('md5') | truncate(24, True, '') }}"
|
||||
managed_disk2: "{{ resource_group | hash('md5') | truncate(18, True, '') }}"
|
||||
|
||||
- name: Clearing (if) previous disks were created (1/2)
|
||||
- name: Clearing (if) previous disks were created
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk2 }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- "{{ managed_disk2 }}"
|
||||
- "{{ managed_disk1 }}"
|
||||
|
||||
- name: Clearing (if) previous disks were created (2/2)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
state: absent
|
||||
|
||||
- name: Create managed disk (Check Mode)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 1
|
||||
tags:
|
||||
|
@ -34,20 +31,20 @@
|
|||
|
||||
- name: Test invalid account name (should give error)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "invalid_char$"
|
||||
disk_size_gb: 1
|
||||
state: present
|
||||
register: output
|
||||
ignore_errors: yes
|
||||
register: output
|
||||
ignore_errors: yes
|
||||
check_mode: no
|
||||
|
||||
- name: Assert task failed
|
||||
assert: { that: "output['failed'] == True" }
|
||||
|
||||
- name: Create new managed disk succesfully
|
||||
- name: Create new managed disk succesfully
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
storage_account_type: "Standard_LRS"
|
||||
disk_size_gb: 1
|
||||
|
@ -56,7 +53,7 @@
|
|||
delete: never
|
||||
register: output
|
||||
|
||||
- name: Assert status succeeded and results include an Id value
|
||||
- name: Assert status succeeded and results include an Id value
|
||||
assert:
|
||||
that:
|
||||
- output.changed
|
||||
|
@ -64,14 +61,14 @@
|
|||
|
||||
- name: Copy disk to a new managed disk
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk2 }}"
|
||||
create_option: "copy"
|
||||
source_resource_uri: "{{ output.state.id }}"
|
||||
disk_size_gb: 1
|
||||
register: copy
|
||||
|
||||
- name: Assert status succeeded and results include an Id value
|
||||
- name: Assert status succeeded and results include an Id value
|
||||
assert:
|
||||
that:
|
||||
- copy.changed
|
||||
|
@ -79,13 +76,13 @@
|
|||
|
||||
- name: Update a new disk without changes
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
storage_account_type: "Standard_LRS"
|
||||
disk_size_gb: 1
|
||||
register: output
|
||||
|
||||
- name: Assert status succeeded and results include an Id value
|
||||
- name: Assert status succeeded and results include an Id value
|
||||
assert:
|
||||
that:
|
||||
- not output.changed
|
||||
|
@ -93,17 +90,17 @@
|
|||
|
||||
- name: Change storage account type to an invalid type
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
storage_account_type: "PremiumL"
|
||||
disk_size_gb: 1
|
||||
register: output
|
||||
ignore_errors: yes
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Assert storage account type change failed
|
||||
- name: Assert storage account type change failed
|
||||
assert: { that: "output['failed'] == True" }
|
||||
|
||||
- name: Change disk size to incompatible size
|
||||
- name: Change disk size to incompatible size
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
|
@ -116,7 +113,7 @@
|
|||
|
||||
- name: Change disk to bigger size
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 2
|
||||
register: output
|
||||
|
@ -128,7 +125,7 @@
|
|||
|
||||
- name: Change disk to Premium
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
storage_account_type: "Premium_LRS"
|
||||
disk_size_gb: 2
|
||||
|
@ -190,32 +187,221 @@
|
|||
that:
|
||||
- "azure_managed_disk | length > 0"
|
||||
|
||||
- name: Delete managed disk (Check Mode)
|
||||
- name: Create virtual network
|
||||
azure_rm_virtualnetwork:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: testvm001
|
||||
address_prefixes: "10.10.0.0/16"
|
||||
|
||||
- name: Add subnet
|
||||
azure_rm_subnet:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: testvm001
|
||||
address_prefix: "10.10.0.0/24"
|
||||
virtual_network: testvm001
|
||||
|
||||
- name: Create public ip
|
||||
azure_rm_publicipaddress:
|
||||
resource_group: "{{ resource_group }}"
|
||||
allocation_method: Static
|
||||
name: testvm001
|
||||
|
||||
- name: Create security group
|
||||
azure_rm_securitygroup:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: testvm001
|
||||
|
||||
- name: Create NIC
|
||||
azure_rm_networkinterface:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: testvm001
|
||||
virtual_network: testvm001
|
||||
subnet: testvm001
|
||||
public_ip_name: testvm001
|
||||
security_group: testvm001
|
||||
|
||||
- name: Create virtual machine
|
||||
azure_rm_virtualmachine:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: testvm001
|
||||
admin_username: adminuser
|
||||
admin_password: Password123!
|
||||
os_type: Linux
|
||||
managed_disk_type: Premium_LRS
|
||||
vm_size: Standard_DS1_v2
|
||||
network_interfaces: testvm001
|
||||
image:
|
||||
offer: UbuntuServer
|
||||
publisher: Canonical
|
||||
sku: 16.04-LTS
|
||||
version: latest
|
||||
|
||||
- name: Mount the disk to virtual machine (check mode)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
state: absent
|
||||
disk_size_gb: 2
|
||||
managed_by: testvm001
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
register: mounted
|
||||
check_mode: yes
|
||||
|
||||
- name: Assert status succeeded
|
||||
- assert:
|
||||
that:
|
||||
- not mounted.state.managed_by
|
||||
|
||||
- name: Mount the disk to virtual machine
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 2
|
||||
managed_by: testvm001
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
register: mounted
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "'testvm001' in mounted.state.managed_by"
|
||||
|
||||
- name: Mount the disk to virtual machine (idempotent)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 2
|
||||
managed_by: testvm001
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
register: mounted
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- not mounted.changed
|
||||
- "'testvm001' in mounted.state.managed_by"
|
||||
|
||||
- name: Unmount the disk to virtual machine (check mode)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 2
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
check_mode: yes
|
||||
register: mounted
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounted.changed
|
||||
|
||||
- name: Unmount the disk to virtual machine
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 2
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
register: mounted
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounted.changed
|
||||
- not mounted.state.managed_by
|
||||
|
||||
- name: Unmount the disk to virtual machine (idempotent)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 2
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
register: mounted
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- not mounted.changed
|
||||
- not mounted.state.managed_by
|
||||
|
||||
- name: Update disk size
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 4
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
register: output
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- output.state.disk_size_gb == 4
|
||||
|
||||
- name: Attach the disk to virtual machine again
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 4
|
||||
managed_by: testvm001
|
||||
tags:
|
||||
testing: testing
|
||||
delete: never
|
||||
register: mounted
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounted.changed
|
||||
- "'testvm001' in mounted.state.managed_by"
|
||||
|
||||
- name: Change disk size to incompatible size
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
state: absent
|
||||
managed_by: testvm001
|
||||
register: output
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Assert delete failed since disk is attached to VM
|
||||
assert: { that: "output['failed'] == True" }
|
||||
|
||||
- name: Delete managed disk (Check Mode)
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
state: absent
|
||||
register: output
|
||||
check_mode: yes
|
||||
|
||||
- name: Assert status succeeded
|
||||
assert:
|
||||
that:
|
||||
- output.changed
|
||||
- output.state
|
||||
|
||||
- name: Delete managed disk
|
||||
- name: Delete managed disk
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk2 }}"
|
||||
disk_size_gb: 1
|
||||
state: absent
|
||||
check_mode: no
|
||||
|
||||
- name: Delete copied managed disk
|
||||
- name: Delete copied managed disk
|
||||
azure_rm_managed_disk:
|
||||
resource_group: "{{ resource_group }}"
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ managed_disk1 }}"
|
||||
disk_size_gb: 2
|
||||
state: absent
|
||||
check_mode: no
|
||||
check_mode: no
|
||||
|
||||
- name: Delete virtual machine
|
||||
azure_rm_virtualmachine:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: testvm001
|
||||
state: absent
|
||||
vm_size: Standard_DS1_v2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue