- name: Prepare random number set_fact: dbname: "cosmos{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" vnname: "vn{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" subnetname: "subnet{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" run_once: yes - name: Create virtual network azure_rm_virtualnetwork: resource_group: "{{ resource_group }}" name: "{{ vnname }}" address_prefixes_cidr: - 10.1.0.0/16 - 172.100.0.0/16 dns_servers: - 127.0.0.1 - 127.0.0.3 - name: Add subnet azure_rm_subnet: name: "{{ subnetname }}" virtual_network_name: "{{ vnname }}" resource_group: "{{ resource_group }}" address_prefix_cidr: "10.1.0.0/24" - name: Create instance of Database Account -- check mode azure_rm_cosmosdbaccount: resource_group: "{{ resource_group }}" name: "{{ dbname }}" location: eastus geo_rep_locations: - name: eastus failover_priority: 0 database_account_offer_type: Standard check_mode: yes register: output - name: Assert the resource instance is well created assert: that: - output.changed - name: Create instance of Database Account azure_rm_cosmosdbaccount: resource_group: "{{ resource_group }}" name: "{{ dbname }}" location: eastus kind: global_document_db geo_rep_locations: - name: eastus failover_priority: 0 - name: westus failover_priority: 1 database_account_offer_type: Standard is_virtual_network_filter_enabled: yes virtual_network_rules: - subnet: resource_group: "{{ resource_group }}" virtual_network_name: "{{ vnname }}" subnet_name: "{{ subnetname }}" ignore_missing_vnet_service_endpoint: yes register: output - name: Assert the resource instance is well created assert: that: - output.changed - name: Create again instance of Database Account azure_rm_cosmosdbaccount: resource_group: "{{ resource_group }}" name: "{{ dbname }}" location: eastus kind: global_document_db geo_rep_locations: - name: eastus failover_priority: 0 - name: westus failover_priority: 1 database_account_offer_type: Standard is_virtual_network_filter_enabled: yes virtual_network_rules: - subnet: resource_group: "{{ resource_group }}" virtual_network_name: "{{ vnname }}" subnet_name: "{{ subnetname }}" ignore_missing_vnet_service_endpoint: yes register: output - name: Assert the state has not changed assert: that: - output.changed == false - name: Create again instance of Database Account -- change something azure_rm_cosmosdbaccount: resource_group: "{{ resource_group }}" name: "{{ dbname }}" location: eastus kind: global_document_db geo_rep_locations: - name: eastus failover_priority: 0 - name: westus failover_priority: 1 database_account_offer_type: Standard is_virtual_network_filter_enabled: yes virtual_network_rules: - subnet: resource_group: "{{ resource_group }}" virtual_network_name: "{{ vnname }}" subnet_name: "{{ subnetname }}" ignore_missing_vnet_service_endpoint: yes enable_automatic_failover: yes register: output - name: Assert the state has not changed assert: that: - output.changed - name: Get facts of single account azure_rm_cosmosdbaccount_info: resource_group: "{{ resource_group }}" name: "{{ dbname }}" register: output - name: Assert that facts are returned assert: that: - output.changed == False - output.accounts[0]['id'] != None - output.accounts[0]['resource_group'] != None - output.accounts[0]['name'] != None - output.accounts[0]['location'] != None - output.accounts[0]['kind'] != None - output.accounts[0]['consistency_policy'] != None - output.accounts[0]['failover_policies'] != None - output.accounts[0]['read_locations'] != None - output.accounts[0]['write_locations'] != None - output.accounts[0]['database_account_offer_type'] != None - output.accounts[0]['ip_range_filter'] != None - output.accounts[0]['is_virtual_network_filter_enabled'] != None - output.accounts[0]['enable_automatic_failover'] != None - output.accounts[0]['enable_cassandra'] != None - output.accounts[0]['enable_table'] != None - output.accounts[0]['enable_gremlin'] != None - output.accounts[0]['virtual_network_rules'] != None - output.accounts[0]['enable_multiple_write_locations'] != None - output.accounts[0]['document_endpoint'] != None - output.accounts[0]['provisioning_state'] != None - output.accounts[0]['tags'] != None - name: Get facts with keys azure_rm_cosmosdbaccount_info: resource_group: "{{ resource_group }}" name: "{{ dbname }}" retrieve_keys: all register: output - name: Assert that facts are returned assert: that: - output.changed == False - output.accounts[0]['primary_master_key'] != None - output.accounts[0]['secondary_master_key'] != None - output.accounts[0]['primary_readonly_master_key'] != None - output.accounts[0]['secondary_readonly_master_key'] != None - name: Get facts with readonly keys azure_rm_cosmosdbaccount_info: resource_group: "{{ resource_group }}" name: "{{ dbname }}" retrieve_keys: readonly retrieve_connection_strings: yes register: output - name: Assert that facts are returned assert: that: - output.changed == False - "'primary_master_key' not in output.accounts[0]" - "'secondary_master_key' not in output.accounts[0]" - output.accounts[0]['primary_readonly_master_key'] != None - output.accounts[0]['secondary_readonly_master_key'] != None - output.accounts[0]['connection_strings'] | length > 0 - name: List acounts by resource group azure_rm_cosmosdbaccount_info: resource_group: "{{ resource_group }}" name: "{{ dbname }}" register: output - name: Assert that facts are returned assert: that: - output.changed == False - output.accounts[0]['id'] != None - output.accounts[0]['resource_group'] != None - output.accounts[0]['name'] != None - output.accounts[0]['location'] != None - output.accounts[0]['kind'] != None - output.accounts[0]['consistency_policy'] != None - output.accounts[0]['failover_policies'] != None - output.accounts[0]['read_locations'] != None - output.accounts[0]['write_locations'] != None - output.accounts[0]['database_account_offer_type'] != None - output.accounts[0]['ip_range_filter'] != None - output.accounts[0]['is_virtual_network_filter_enabled'] != None - output.accounts[0]['enable_automatic_failover'] != None - output.accounts[0]['enable_cassandra'] != None - output.accounts[0]['enable_table'] != None - output.accounts[0]['enable_gremlin'] != None - output.accounts[0]['virtual_network_rules'] != None - output.accounts[0]['enable_multiple_write_locations'] != None - output.accounts[0]['document_endpoint'] != None - output.accounts[0]['provisioning_state'] != None - output.accounts[0]['tags'] != None - name: Delete instance of Database Account -- check mode azure_rm_cosmosdbaccount: resource_group: "{{ resource_group }}" name: "{{ dbname }}" state: absent check_mode: yes register: output - name: Assert the state has changed assert: that: - output.changed - name: Delete instance of Database Account azure_rm_cosmosdbaccount: resource_group: "{{ resource_group }}" name: "{{ dbname }}" state: absent register: output - name: Assert the state has changed assert: that: - output.changed # currently disabled as there's a bug in SDK / Service #- name: Delete unexisting instance of Database Account # azure_rm_cosmosdbaccount: # resource_group: "{{ resource_group }}" # name: "{{ dbname }}" # state: absent # register: output #- name: Assert the state has changed # assert: # that: # - output.changed == false