- name: Prepare random number set_fact: rpfx: "{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" run_once: yes - name: Create virtual network azure_rm_virtualnetwork: resource_group: "{{ resource_group }}" name: testVnet address_prefixes: "10.0.0.0/16" - name: Add subnet azure_rm_subnet: resource_group: "{{ resource_group }}" name: testSubnet address_prefix: "10.0.1.0/24" virtual_network: testVnet - name: Create public IP address azure_rm_publicipaddress: resource_group: "{{ resource_group }}" allocation_method: Static name: testPublicIP - name: Create virtual network inteface cards for VM A and B azure_rm_networkinterface: resource_group: "{{ resource_group }}" name: "vmforimage{{ rpfx }}nic" virtual_network: testVnet subnet: testSubnet - name: Create VM azure_rm_virtualmachine: resource_group: "{{ resource_group }}" name: "vmforimage{{ rpfx }}" location: eastus admin_username: testuser admin_password: "Password1234!" vm_size: Standard_B1ms network_interfaces: "vmforimage{{ rpfx }}nic" image: offer: UbuntuServer publisher: Canonical sku: 16.04-LTS version: latest - name: Get VM facts azure_rm_virtualmachine_facts: resource_group: "{{ resource_group }}" name: "vmforimage{{ rpfx }}" register: output - name: Create a snapshot by importing an unmanaged blob from the same subscription. azure_rm_snapshot: resource_group: "{{ resource_group }}" name: "mySnapshot-{{ rpfx }}" location: eastus creation_data: create_option: Import source_uri: 'https://{{ output.vms[0].storage_account_name }}.blob.core.windows.net/{{ output.vms[0].storage_container_name }}/{{ output.vms[0].storage_blob_name }}' register: output - assert: that: - output.changed - name: Generalize VM azure_rm_virtualmachine: resource_group: "{{ resource_group }}" name: "vmforimage{{ rpfx }}" generalized: yes - name: Create custom image azure_rm_image: resource_group: "{{ resource_group }}" name: testimagea source: "vmforimage{{ rpfx }}" - name: Create or update a simple gallery. azure_rm_gallery: resource_group: "{{ resource_group }}" name: myGallery{{ rpfx }} location: eastus description: This is the gallery description. register: output - assert: that: - output.changed - name: Create or update a simple gallery - idempotent azure_rm_gallery: resource_group: "{{ resource_group }}" name: myGallery{{ rpfx }} location: eastus description: This is the gallery description. register: output - assert: that: - not output.changed - name: Create or update a simple gallery - change description azure_rm_gallery: resource_group: "{{ resource_group }}" name: myGallery{{ rpfx }} location: eastus description: This is the gallery description - xxx. register: output - assert: that: - output.changed - name: Get a gallery info. azure_rm_gallery_info: resource_group: "{{ resource_group }}" name: myGallery{{ rpfx }} register: output - assert: that: - not output.changed - output.galleries['id'] != None - output.galleries['name'] != None - output.galleries['location'] != None - output.galleries['description'] != None - output.galleries['provisioning_state'] != None - name: Create or update gallery image azure_rm_galleryimage: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} name: myImage location: eastus os_type: linux os_state: generalized identifier: publisher: myPublisherName offer: myOfferName sku: mySkuName description: Image Description register: output - assert: that: - output.changed - name: Create or update gallery image - idempotent azure_rm_galleryimage: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} name: myImage location: eastus os_type: linux os_state: generalized identifier: publisher: myPublisherName offer: myOfferName sku: mySkuName description: Image Description register: output - assert: that: - not output.changed - name: Create or update gallery image - change description azure_rm_galleryimage: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} name: myImage location: eastus os_type: linux os_state: generalized identifier: publisher: myPublisherName offer: myOfferName sku: mySkuName description: Image Description XXXs register: output - assert: that: - output.changed - name: Get a gallery image info. azure_rm_galleryimage_info: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} name: myImage register: output - assert: that: - not output.changed - output.images['id'] != None - output.images['name'] != None - output.images['location'] != None - output.images['os_state'] != None - output.images['os_type'] != None - output.images['identifier'] != None - name: Create or update a simple gallery Image Version. azure_rm_galleryimageversion: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} gallery_image_name: myImage name: 10.1.3 location: eastus publishing_profile: end_of_life_date: "2020-10-01t00:00:00+00:00" exclude_from_latest: yes replica_count: 3 storage_account_type: Standard_LRS target_regions: - name: eastus regional_replica_count: 1 - name: westus regional_replica_count: 2 storage_account_type: Standard_ZRS managed_image: name: testimagea resource_group: "{{ resource_group }}" register: output - assert: that: - output.changed - name: Create or update a simple gallery Image Version - idempotent azure_rm_galleryimageversion: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} gallery_image_name: myImage name: 10.1.3 location: eastus publishing_profile: end_of_life_date: "2020-10-01t00:00:00+00:00" exclude_from_latest: yes replica_count: 3 storage_account_type: Standard_LRS target_regions: - name: eastus regional_replica_count: 1 - name: westus regional_replica_count: 2 storage_account_type: Standard_ZRS managed_image: name: testimagea resource_group: "{{ resource_group }}" register: output - assert: that: - not output.changed - name: Create or update a simple gallery Image Version - change end of life azure_rm_galleryimageversion: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} gallery_image_name: myImage name: 10.1.3 location: eastus publishing_profile: end_of_life_date: "2021-10-01t00:00:00+00:00" exclude_from_latest: yes replica_count: 3 storage_account_type: Standard_LRS target_regions: - name: eastus regional_replica_count: 1 - name: westus regional_replica_count: 2 storage_account_type: Standard_ZRS managed_image: name: testimagea resource_group: "{{ resource_group }}" register: output - assert: that: - output.changed - name: Get a simple gallery Image Version info. azure_rm_galleryimageversion_info: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} gallery_image_name: myImage name: 10.1.3 register: output - assert: that: - not output.changed - output.versions['id'] != None - output.versions['name'] != None - output.versions['location'] != None - output.versions['publishing_profile'] != None - output.versions['provisioning_state'] != None - name: Delete gallery image Version. azure_rm_galleryimageversion: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} gallery_image_name: myImage name: 10.1.3 state: absent register: output - assert: that: - output.changed - name: pasue 2 minutes, wait for deletion complete pause: minutes: 2 - name: Delete gallery image azure_rm_galleryimage: resource_group: "{{ resource_group }}" gallery_name: myGallery{{ rpfx }} name: myImage state: absent register: output - assert: that: - output.changed - name: pasue 2 minutes, wait for deletion complete pause: minutes: 2 - name: Delete gallery azure_rm_gallery: resource_group: "{{ resource_group }}" name: myGallery{{ rpfx }} state: absent register: output - assert: that: - output.changed