- name: Setup variables... set_fact: 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 azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{item }}" state: absent with_items: - "{{ managed_disk2 }}" - "{{ managed_disk1 }}" - name: Create managed disk (Check Mode) azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" disk_size_gb: 1 tags: testing: testing delete: never register: output check_mode: yes - name: Assert status succeeded (Check Mode) assert: that: - output.changed - output.state - name: Test invalid account name (should give error) azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "invalid_char$" disk_size_gb: 1 state: present register: output ignore_errors: yes check_mode: no - name: Assert task failed assert: { that: "output['failed'] == True" } - name: Create new managed disk succesfully azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" storage_account_type: "Standard_LRS" disk_size_gb: 1 tags: testing: testing delete: never register: output - name: Assert status succeeded and results include an Id value assert: that: - output.changed - output.state.id is defined - name: Copy disk to a new managed disk azure_rm_managed_disk: 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 assert: that: - copy.changed - copy.state.id is defined - name: Update a new disk without changes azure_rm_managed_disk: 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 assert: that: - not output.changed - output.state.id is defined - name: Change storage account type to an invalid type azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" storage_account_type: "PremiumL" disk_size_gb: 1 register: output ignore_errors: yes - name: Assert storage account type change failed assert: { that: "output['failed'] == True" } - name: Change disk size to incompatible size azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" disk_size_gb: 30000 register: output ignore_errors: yes - name: Assert disk size change to incompatible size (>4095) failure assert: { that: "output['failed'] == True" } - name: Change disk to bigger size azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" disk_size_gb: 2 register: output - name: Assert status succeeded assert: that: - output.changed - name: Change disk to Premium azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" storage_account_type: "Premium_LRS" disk_size_gb: 2 register: output - name: Assert status succeeded assert: that: - output.changed - name: Update disk tags azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" disk_size_gb: 2 tags: testing: testing delete: never galaxy: 'no' register: output - name: Assert disk incremented tags assert: that: - "output.state.tags | length == 3" - "output.state.tags.galaxy == 'no'" - name: Update disk tags azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" disk_size_gb: 2 tags: testing: testing delete: never register: output - name: Assert disk tags are 2 assert: that: - "output.state.tags | length == 2" - "output.state.tags.testing == 'testing'" - "output.state.tags.delete == 'never'" - name: Gather facts to one specific disk azure_rm_managed_disk_facts: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" - assert: that: - "azure_managed_disk | length == 1" - name: Gather facts azure_rm_managed_disk_facts: resource_group: "{{ resource_group }}" - assert: that: - "azure_managed_disk | length > 0" - 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 }}" name: "{{ managed_disk1 }}" disk_size_gb: 2 managed_by: testvm001 tags: testing: testing delete: never register: mounted check_mode: yes - 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 azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk2 }}" state: absent check_mode: no - name: Delete copied managed disk azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ managed_disk1 }}" disk_size_gb: 2 state: absent check_mode: no - name: Delete virtual machine azure_rm_virtualmachine: resource_group: "{{ resource_group }}" name: testvm001 state: absent vm_size: Standard_DS1_v2