- name: Fix resource prefix set_fact: redis_name: "redis-{{ resource_group | hash('md5') | truncate(7, True, '') }}-{{ 1000 | random }}" vnet_name: "vnet-{{ resource_group | hash('md5') | truncate(7, True, '') }}-{{ 1000 | random }}" subnet_name: "subnet-{{ resource_group | hash('md5') | truncate(7, True, '') }}-{{ 1000 | random }}" rule_name: "rule1" run_once: yes - name: Create a redis cache (Check Mode) azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" sku: name: basic size: C1 wait_for_provisioning: False check_mode: yes register: output - name: Assert creating redis cache check mode assert: that: - output.changed - name: Create a redis cache azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" sku: name: basic size: C1 wait_for_provisioning: False register: output - name: Assert creating redis cache assert: that: - output.changed - output.id - name: Get facts azure_rm_rediscache_facts: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" register: facts - name: Assert facts assert: that: - facts.rediscaches | length == 1 - facts.rediscaches[0].id != None - facts.rediscaches[0].host_name != None - facts.rediscaches[0].provisioning_state != None - facts.rediscaches[0].sku.name == 'basic' - facts.rediscaches[0].sku.size == 'C1' - name: Update the redis cache (idempotent) azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" sku: name: basic size: C1 wait_for_provisioning: False register: output - name: assert output not changed assert: that: - not output.changed - name: long-running rediscache tests [run with `--tags long_run,untagged` to enable] # creating redis Cache costs about 20 mins async operation, # need to poll status from Creating to Running, then able to perform updating/deleting operation, # otherwise, will met error: # "The resource '' is busy processing a previous update request or is undergoing system maintenance. # As such, it is currently unable to accept the update request. Please try again later." block: - name: Wait for Redis provisioning to complete azure_rm_rediscache_facts: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" register: facts until: facts.rediscaches[0]['provisioning_state'] == 'Succeeded' retries: 30 delay: 60 - name: (actually) update redis cache azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" sku: name: basic size: C1 enable_non_ssl_port: true tags: testing: foo wait_for_provisioning: True register: output - name: assert output changed assert: that: - output.changed - name: Update redis cache configuration azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" sku: name: basic size: C1 enable_non_ssl_port: True maxmemory_policy: allkeys_lru tags: testing: foo register: output - name: assert output changed assert: that: - output.changed - name: Scale up the redis cache azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" sku: name: standard size: C1 tags: testing: foo wait_for_provisioning: True register: output - assert: that: - output.changed - name: Force reboot redis cache azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" reboot: reboot_type: all register: output - assert: that: - output.changed - name: Delete the redis cache (Check Mode) azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" state: absent check_mode: yes register: output - name: assert deleting redis cache check mode assert: that: output.changed - name: Delete the redis cache azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}" state: absent register: output - assert: that: - output.changed tags: [long_run, never] - name: Create virtual network azure_rm_virtualnetwork: resource_group: "{{ resource_group }}" name: "{{ vnet_name }}" address_prefixes: "10.10.0.0/16" - name: Add subnet azure_rm_subnet: resource_group: "{{ resource_group }}" name: "{{ subnet_name }}" address_prefix: "10.10.0.0/24" virtual_network: "{{ vnet_name }}" - name: Create redis with subnet azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}2" sku: name: premium size: P1 subnet: name: "{{ subnet_name }}" virtual_network_name: "{{ vnet_name }}" wait_for_provisioning: False register: output - name: Assert creating redis cache assert: that: - output.changed - output.id - name: Get facts azure_rm_rediscache_facts: resource_group: "{{ resource_group }}" name: "{{ redis_name }}2" return_access_keys: True register: facts - name: Assert facts assert: that: - facts.rediscaches | length == 1 - facts.rediscaches[0].subnet != None - facts.rediscaches[0].access_keys.primary != None - name: Create firewall rule (Check mode) azure_rm_rediscachefirewallrule: resource_group: "{{ resource_group }}" cache_name: "{{ redis_name }}2" name: "{{ rule_name }}" start_ip_address: 192.168.1.1 end_ip_address: 192.168.1.4 check_mode: yes register: output - name: Assert check mode creation assert: that: - output.changed - name: long-running rediscachefirewallrule tests [run with `--tags long_run,untagged` to enable] # Creating firewall rule need Redis status is running, while creating redis Cache costs about 20 mins async operation, # need to poll status from Creating to Running, then able to perform firewall rule creating, # otherwise, will met error: # "Error creating/updating Firewall rule of Azure Cache for Redis: Azure Error: Conflict\nMessage: The resource # '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Cache/Redis/myRedis' is busy processing # a previous update request or is undergoing system maintenance. As such, it is currently unable to accept the update request. Please try again later." block: - name: Wait for Redis provisioning to complete azure_rm_rediscache_facts: resource_group: "{{ resource_group }}" name: "{{ redis_name }}2" register: facts until: facts.rediscaches[0]['provisioning_state'] == 'Succeeded' retries: 30 delay: 60 - name: Create firewall rule azure_rm_rediscachefirewallrule: resource_group: "{{ resource_group }}" cache_name: "{{ redis_name }}2" name: "{{ rule_name }}" start_ip_address: 192.168.1.1 end_ip_address: 192.168.1.4 register: output - name: Assert creation assert: that: - output.changed - output.id - name: Update firewall rule idempotence azure_rm_rediscachefirewallrule: resource_group: "{{ resource_group }}" cache_name: "{{ redis_name }}2" name: "{{ rule_name }}" start_ip_address: 192.168.1.1 end_ip_address: 192.168.1.4 register: output - name: Assert idempotence assert: that: - output.changed == False - name: Update firewall rule azure_rm_rediscachefirewallrule: resource_group: "{{ resource_group }}" cache_name: "{{ redis_name }}2" name: "{{ rule_name }}" end_ip_address: 192.168.1.5 register: output - name: Assert updating assert: that: - output.changed - name: Delete firewall rule azure_rm_rediscachefirewallrule: resource_group: "{{ resource_group }}" cache_name: "{{ redis_name }}2" name: "{{ rule_name }}" state: absent register: output - name: Assert deletion assert: that: - output.changed - name: Delete the redis cache azure_rm_rediscache: resource_group: "{{ resource_group }}" name: "{{ redis_name }}2" state: absent register: output tags: [long_run, never]