1- name: Prepare random number 2 set_fact: 3 dbname: "cosmos{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" 4 vnname: "vn{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" 5 subnetname: "subnet{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}" 6 run_once: yes 7 8- name: Create virtual network 9 azure_rm_virtualnetwork: 10 resource_group: "{{ resource_group }}" 11 name: "{{ vnname }}" 12 address_prefixes_cidr: 13 - 10.1.0.0/16 14 - 172.100.0.0/16 15 dns_servers: 16 - 127.0.0.1 17 - 127.0.0.3 18 19- name: Add subnet 20 azure_rm_subnet: 21 name: "{{ subnetname }}" 22 virtual_network_name: "{{ vnname }}" 23 resource_group: "{{ resource_group }}" 24 address_prefix_cidr: "10.1.0.0/24" 25 26- name: Create instance of Database Account -- check mode 27 azure_rm_cosmosdbaccount: 28 resource_group: "{{ resource_group }}" 29 name: "{{ dbname }}" 30 location: eastus 31 geo_rep_locations: 32 - name: eastus 33 failover_priority: 0 34 database_account_offer_type: Standard 35 check_mode: yes 36 register: output 37- name: Assert the resource instance is well created 38 assert: 39 that: 40 - output.changed 41 42- name: Create instance of Database Account 43 azure_rm_cosmosdbaccount: 44 resource_group: "{{ resource_group }}" 45 name: "{{ dbname }}" 46 location: eastus 47 kind: global_document_db 48 geo_rep_locations: 49 - name: eastus 50 failover_priority: 0 51 - name: westus 52 failover_priority: 1 53 database_account_offer_type: Standard 54 is_virtual_network_filter_enabled: yes 55 virtual_network_rules: 56 - subnet: 57 resource_group: "{{ resource_group }}" 58 virtual_network_name: "{{ vnname }}" 59 subnet_name: "{{ subnetname }}" 60 ignore_missing_vnet_service_endpoint: yes 61 register: output 62- name: Assert the resource instance is well created 63 assert: 64 that: 65 - output.changed 66 67- name: Create again instance of Database Account 68 azure_rm_cosmosdbaccount: 69 resource_group: "{{ resource_group }}" 70 name: "{{ dbname }}" 71 location: eastus 72 kind: global_document_db 73 geo_rep_locations: 74 - name: eastus 75 failover_priority: 0 76 - name: westus 77 failover_priority: 1 78 database_account_offer_type: Standard 79 is_virtual_network_filter_enabled: yes 80 virtual_network_rules: 81 - subnet: 82 resource_group: "{{ resource_group }}" 83 virtual_network_name: "{{ vnname }}" 84 subnet_name: "{{ subnetname }}" 85 ignore_missing_vnet_service_endpoint: yes 86 register: output 87- name: Assert the state has not changed 88 assert: 89 that: 90 - output.changed == false 91 92- name: Create again instance of Database Account -- change something 93 azure_rm_cosmosdbaccount: 94 resource_group: "{{ resource_group }}" 95 name: "{{ dbname }}" 96 location: eastus 97 kind: global_document_db 98 geo_rep_locations: 99 - name: eastus 100 failover_priority: 0 101 - name: westus 102 failover_priority: 1 103 database_account_offer_type: Standard 104 is_virtual_network_filter_enabled: yes 105 virtual_network_rules: 106 - subnet: 107 resource_group: "{{ resource_group }}" 108 virtual_network_name: "{{ vnname }}" 109 subnet_name: "{{ subnetname }}" 110 ignore_missing_vnet_service_endpoint: yes 111 enable_automatic_failover: yes 112 register: output 113- name: Assert the state has not changed 114 assert: 115 that: 116 - output.changed 117 118- name: Get facts of single account 119 azure_rm_cosmosdbaccount_info: 120 resource_group: "{{ resource_group }}" 121 name: "{{ dbname }}" 122 register: output 123 124- name: Assert that facts are returned 125 assert: 126 that: 127 - output.changed == False 128 - output.accounts[0]['id'] != None 129 - output.accounts[0]['resource_group'] != None 130 - output.accounts[0]['name'] != None 131 - output.accounts[0]['location'] != None 132 - output.accounts[0]['kind'] != None 133 - output.accounts[0]['consistency_policy'] != None 134 - output.accounts[0]['failover_policies'] != None 135 - output.accounts[0]['read_locations'] != None 136 - output.accounts[0]['write_locations'] != None 137 - output.accounts[0]['database_account_offer_type'] != None 138 - output.accounts[0]['ip_range_filter'] != None 139 - output.accounts[0]['is_virtual_network_filter_enabled'] != None 140 - output.accounts[0]['enable_automatic_failover'] != None 141 - output.accounts[0]['enable_cassandra'] != None 142 - output.accounts[0]['enable_table'] != None 143 - output.accounts[0]['enable_gremlin'] != None 144 - output.accounts[0]['virtual_network_rules'] != None 145 - output.accounts[0]['enable_multiple_write_locations'] != None 146 - output.accounts[0]['document_endpoint'] != None 147 - output.accounts[0]['provisioning_state'] != None 148 - output.accounts[0]['tags'] != None 149 150- name: Get facts with keys 151 azure_rm_cosmosdbaccount_info: 152 resource_group: "{{ resource_group }}" 153 name: "{{ dbname }}" 154 retrieve_keys: all 155 register: output 156 157- name: Assert that facts are returned 158 assert: 159 that: 160 - output.changed == False 161 - output.accounts[0]['primary_master_key'] != None 162 - output.accounts[0]['secondary_master_key'] != None 163 - output.accounts[0]['primary_readonly_master_key'] != None 164 - output.accounts[0]['secondary_readonly_master_key'] != None 165 166- name: Get facts with readonly keys 167 azure_rm_cosmosdbaccount_info: 168 resource_group: "{{ resource_group }}" 169 name: "{{ dbname }}" 170 retrieve_keys: readonly 171 retrieve_connection_strings: yes 172 register: output 173 174- name: Assert that facts are returned 175 assert: 176 that: 177 - output.changed == False 178 - "'primary_master_key' not in output.accounts[0]" 179 - "'secondary_master_key' not in output.accounts[0]" 180 - output.accounts[0]['primary_readonly_master_key'] != None 181 - output.accounts[0]['secondary_readonly_master_key'] != None 182 - output.accounts[0]['connection_strings'] | length > 0 183 184- name: List acounts by resource group 185 azure_rm_cosmosdbaccount_info: 186 resource_group: "{{ resource_group }}" 187 name: "{{ dbname }}" 188 register: output 189 190- name: Assert that facts are returned 191 assert: 192 that: 193 - output.changed == False 194 - output.accounts[0]['id'] != None 195 - output.accounts[0]['resource_group'] != None 196 - output.accounts[0]['name'] != None 197 - output.accounts[0]['location'] != None 198 - output.accounts[0]['kind'] != None 199 - output.accounts[0]['consistency_policy'] != None 200 - output.accounts[0]['failover_policies'] != None 201 - output.accounts[0]['read_locations'] != None 202 - output.accounts[0]['write_locations'] != None 203 - output.accounts[0]['database_account_offer_type'] != None 204 - output.accounts[0]['ip_range_filter'] != None 205 - output.accounts[0]['is_virtual_network_filter_enabled'] != None 206 - output.accounts[0]['enable_automatic_failover'] != None 207 - output.accounts[0]['enable_cassandra'] != None 208 - output.accounts[0]['enable_table'] != None 209 - output.accounts[0]['enable_gremlin'] != None 210 - output.accounts[0]['virtual_network_rules'] != None 211 - output.accounts[0]['enable_multiple_write_locations'] != None 212 - output.accounts[0]['document_endpoint'] != None 213 - output.accounts[0]['provisioning_state'] != None 214 - output.accounts[0]['tags'] != None 215 216- name: Delete instance of Database Account -- check mode 217 azure_rm_cosmosdbaccount: 218 resource_group: "{{ resource_group }}" 219 name: "{{ dbname }}" 220 state: absent 221 check_mode: yes 222 register: output 223- name: Assert the state has changed 224 assert: 225 that: 226 - output.changed 227 228- name: Delete instance of Database Account 229 azure_rm_cosmosdbaccount: 230 resource_group: "{{ resource_group }}" 231 name: "{{ dbname }}" 232 state: absent 233 register: output 234- name: Assert the state has changed 235 assert: 236 that: 237 - output.changed 238 239# currently disabled as there's a bug in SDK / Service 240#- name: Delete unexisting instance of Database Account 241# azure_rm_cosmosdbaccount: 242# resource_group: "{{ resource_group }}" 243# name: "{{ dbname }}" 244# state: absent 245# register: output 246#- name: Assert the state has changed 247# assert: 248# that: 249# - output.changed == false 250