- name: Create storage account name set_fact: vm_name: "vm{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}x" public_ip_name: "pip{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" security_group_name: "sg{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" empty_disk_name: "emptydisk{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" - name: Create virtual network azure_rm_virtualnetwork: resource_group: "{{ resource_group }}" name: "{{ vm_name }}" address_prefixes: "10.10.0.0/16" - name: Add subnet azure_rm_subnet: resource_group: "{{ resource_group }}" name: "{{ vm_name }}" address_prefix: "10.10.0.0/24" virtual_network: "{{ vm_name }}" - name: Create public ip azure_rm_publicipaddress: resource_group: "{{ resource_group }}" allocation_method: Static name: "{{ public_ip_name }}" - name: Create security group azure_rm_securitygroup: resource_group: "{{ resource_group }}" name: "{{ security_group_name }}" - name: Create NIC azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "{{ vm_name }}" virtual_network: "{{ vm_name }}" subnet: "{{ vm_name }}" public_ip_name: "{{ public_ip_name }}" security_group: "{{ security_group_name }}" - name: Create virtual machine azure_rm_virtualmachine: resource_group: "{{ resource_group }}" name: "{{ vm_name }}" vm_size: Standard_A0 managed_disk_type: Standard_LRS admin_username: adminuser admin_password: Password123! os_type: Linux network_interfaces: "{{ vm_name }}" image: offer: UbuntuServer publisher: Canonical sku: 16.04-LTS version: latest register: vm - name: Create new empty managed disk azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ empty_disk_name }}" storage_account_type: "Standard_LRS" disk_size_gb: 1 register: emptydisk - name: Create an image from VM (check mode) azure_rm_image: resource_group: "{{ resource_group }}" source: "{{ vm.ansible_facts.azure_vm.properties.storageProfile.osDisk.managedDisk.id }}" name: testimage001 os_type: Linux data_disk_sources: - "{{ empty_disk_name }}" check_mode: yes register: output - assert: that: output.changed - name: Create an image from VM azure_rm_image: resource_group: "{{ resource_group }}" source: name: "{{ vm_name }}" type: disks name: testimage001 os_type: Linux register: output - assert: that: - output.changed - output.id - name: Create an image from VM (idempotent) azure_rm_image: resource_group: "{{ resource_group }}" source: "{{ vm.ansible_facts.azure_vm.properties.storageProfile.osDisk.managedDisk.id }}" name: testimage001 os_type: Linux register: output - assert: that: - not output.changed - output.id - name: Gather information about image created azure_rm_image_facts: resource_group: "{{ resource_group }}" name: testimage001 register: output - assert: that: - output.images != [] - name: Delete image (check mode) azure_rm_image: resource_group: "{{ resource_group }}" name: testimage001 state: absent register: output check_mode: yes - assert: that: - output.changed - name: Delete image azure_rm_image: resource_group: "{{ resource_group }}" name: testimage001 state: absent register: output - assert: that: - output.changed - name: Delete image (idempotent) azure_rm_image: resource_group: "{{ resource_group }}" name: testimage001 state: absent register: output - assert: that: - not output.changed - name: Delete empty disk azure_rm_managed_disk: resource_group: "{{ resource_group }}" name: "{{ empty_disk_name }}" state: absent - name: Delete VM azure_rm_virtualmachine: resource_group: "{{ resource_group }}" name: "{{ vm_name }}" state: absent vm_size: Standard_A0 register: output - name: Delete public ip azure_rm_publicipaddress: resource_group: "{{ resource_group }}" allocation_method: Static name: "{{ public_ip_name }}" state: absent