azure
azure copied to clipboard
azure.azcollection.azure_rm_sqldatabase idempotency doesn't work
SUMMARY
If playbook task is executed again after Azure SQL database already exists the tasks fails with misleading error: An exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'edition' This breaks any recurring automation or CI/CD pipelines.
ISSUE TYPE
- Bug Report
COMPONENT NAME
azure.azcollection.azure_rm_sqldatabase
ANSIBLE VERSION
ansible 2.10.2
CONFIGURATION
OS / ENVIRONMENT
Azure DevOps Runner
STEPS TO REPRODUCE
**Tasks Content**
# tasks file for non-prod_azure_rm_sqlserver
- name: Create variable for desired region
set_fact:
defined_region: "{{ item.value.location_of_resources }}"
with_dict: "{{ placement }}"
- name: Set the Service Principal ID
set_fact:
client_id: "{{ item.value.client_id }}"
no_log: True
with_dict: "{{ subscription_authentication }}"
- name: Set the Service Principal secret
set_fact:
secret: "{{ item.value.secret }}"
no_log: True
with_dict: "{{ subscription_authentication }}"
- name: Set the Service Principal tenant_id
set_fact:
tenant : "{{ item.value.tenant }}"
no_log: True
with_dict: "{{ subscription_authentication }}"
- name: Manage Subscription Resource Group
azure_rm_resourcegroup:
tenant: "{{ tenant }}"
client_id: "{{ client_id }}"
secret: "{{ secret }}"
subscription_id: "{{ item.value.subscription_id }}"
state: present
location: "{{ defined_region }}"
name: "{{ item.value.resource_group }}"
tags: "{{ item.value.tags }}"
with_dict: "{{ sql_server_paramaters }}"
- name: Manage SQL Database Servers
azure.azcollection.azure_rm_sqlserver:
tenant: "{{ tenant }}"
client_id: "{{ client_id }}"
secret: "{{ secret }}"
subscription_id: "{{ item.value.subscription_id }}"
state: present
location: "{{ defined_region }}"
resource_group: "{{ item.value.resource_group }}"
name: "{{ item.value.db_server_name }}"
admin_username: "{{ item.value.admin_username }}"
admin_password: "{{ item.value.admin_password }}"
tags: "{{ item.value.tags }}"
with_dict: "{{ sql_server_paramaters }}"
**Vars Content**
---
# vars file for non-prod_azure_rm_sqlserver
placement:
azure_region:
location_of_resources: eastus
subscription_authentication:
service_principal:
name: Service Connection Name
tenant: exxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxa73c
client_id: 1axxxxxxx-xxxx-xxxx-xxxx-xxxxxxxa73c
secret: !vault |
$ANSIBLE_VAULT;1.1;AES256
36366162376432333535353737376235636235316133323738363064616139636264326361343136
6138396265626666656163616662643136633338363235300a306239666131643662393863653862
37376538316665616532613937356135373962373938313737633366623932323137303438323032
3436656136333834320a393562626634396435346562616563386130323262393338613663626261
34326539333935643664316239663662333231366336336165376161303061653961353231633565
3636376365656630343061383066326435653833303563396664
sql_server_paramaters:
SQL_server:
subscription_id: exxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxa73c
resource_group: USEPRNPINTRGR01
db_server_name: USEPRNPINTSQLXXX0001
admin_username: mssqladmin
admin_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
31636631353661313632333463633335343430643831343161396530313431666332326465646164
6131633636343862633366653335663031393831356636350a336132316137323264643565393561
62373364616235613066306466313061636266646633346333343737336334393337303362386166
3733376139343334300a366463363961323961373933323361373634663864366464656535393330
64316161353434343866386162333361376265626131633033373361303935373332
tags:
client: mycustomer
automation: ansible
sql_db_paramaters:
SQL_database:
subscription_id: exxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxa73c
resource_group: USEPRNPINTRGR01
db_name: USEPRNPINTSDBXXX0001
db_server_name: USEPRNPINTSQLXXX0001
edition: premium
collation: Latin1_General_CI_AS
max_size_bytes: 268435456000
zone_redundant: false
elastic_pool_name: USEPRNPINTSQLPOOL
tags:
client: mycustomer
automation: ansible
EXPECTED RESULTS
Task should report ok and move on to next task
ACTUAL RESULTS
Task Fails with An exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'edition'
TASK [non-prod_azure_rm_sqldatabase : Manage SQL Databases] ********************
task path: /home/vsts/work/1/s/myclient/non-prod_azure_rm_sqldatabase/tasks/main.yml:38
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: vsts
<127.0.0.1> EXEC /bin/sh -c 'echo ~vsts && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/vsts/.ansible/tmp `"&& mkdir "` echo /home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512 `" && echo ansible-tmp-1602022127.2841625-3140-79177511662512="` echo /home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512 `" ) && sleep 0'
Using module file /home/vsts/.ansible/collections/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py
<127.0.0.1> PUT /home/vsts/.ansible/tmp/ansible-local-3022zhf7w0jz/tmp8hncz8e1 TO /home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/ /home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/opt/hostedtoolcache/Python/3.6.12/x64/bin/python /home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
Traceback (most recent call last):
File "/home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py", line 102, in <module>
_ansiballz_main()
File "/home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py", line 94, in _ansiballz_main
invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
File "/home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py", line 40, in invoke_module
runpy.run_module(mod_name='ansible_collections.azure.azcollection.plugins.modules.azure_rm_sqldatabase', init_globals=None, run_name='__main__', alter_sys=True)
File "/opt/hostedtoolcache/Python/3.6.12/x64/lib/python3.6/runpy.py", line 205, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File "/opt/hostedtoolcache/Python/3.6.12/x64/lib/python3.6/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/opt/hostedtoolcache/Python/3.6.12/x64/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py", line 515, in <module>
File "/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py", line 511, in main
File "/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py", line 314, in __init__
File "/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/module_utils/azure_rm_common.py", line 436, in __init__
File "/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py", line 387, in exec_module
KeyError: 'edition'
failed: [localhost] (item={'key': 'myclient_Non-Production_Intranet_SQL_database', 'value': {'subscription_id': 'XXXX-XXXX-XXXX', 'resource_group': 'USEPRNPINTRGR01', 'db_name': 'USEPRNPINTSDBXXX0001', 'db_server_name': 'USEPRNPINTSQLXXX0001', 'edition': 'premium', 'collation': 'Latin1_General_CI_AS', 'max_size_bytes': 268435456000, 'zone_redundant': False, 'elastic_pool_name': 'USEPRNPINTSQLPOOL', 'tags': {'client': 'myclient', 'automation': 'ansible'}}}) => {
"ansible_loop_var": "item",
"changed": false,
"item": {
"key": "myclient_Non-Production_Intranet_SQL_database",
"value": {
"collation": "Latin1_General_CI_AS",
"db_name": "USEPRNPINTSDBXXX0001",
"db_server_name": "USEPRNPINTSQLXXX0001",
"edition": "premium",
"elastic_pool_name": "USEPRNPINTSQLPOOL",
"max_size_bytes": 268435456000,
"resource_group": "USEPRNPINTRGR01",
"subscription_id": "XXXX-XXXX-XXXX",
"tags": {
"automation": "ansible",
"client": "myclient"
},
"zone_redundant": false
}
},
"module_stderr": "Traceback (most recent call last):\n File \"/home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py\", line 102, in <module>\n _ansiballz_main()\n File \"/home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/home/vsts/.ansible/tmp/ansible-tmp-1602022127.2841625-3140-79177511662512/AnsiballZ_azure_rm_sqldatabase.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible_collections.azure.azcollection.plugins.modules.azure_rm_sqldatabase', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/opt/hostedtoolcache/Python/3.6.12/x64/lib/python3.6/runpy.py\", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/opt/hostedtoolcache/Python/3.6.12/x64/lib/python3.6/runpy.py\", line 96, in _run_module_code\n mod_name, mod_spec, pkg_name, script_name)\n File \"/opt/hostedtoolcache/Python/3.6.12/x64/lib/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py\", line 515, in <module>\n File \"/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py\", line 511, in main\n File \"/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py\", line 314, in __init__\n File \"/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/module_utils/azure_rm_common.py\", line 436, in __init__\n File \"/tmp/ansible_azure.azcollection.azure_rm_sqldatabase_payload_yvqo7kqq/ansible_azure.azcollection.azure_rm_sqldatabase_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_sqldatabase.py\", line 387, in exec_module\nKeyError: 'edition'\n",
"module_stdout": "",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1
}
@dvntstph Can you update to V1.13.0 and try again? Does your problem still exist? Thank you very much!
ansible-galaxy collection install azure.azcollection --force
@dvntstph Are you still concerned about this problem? Does the problem still exist? If it doesn't exist, I will close it, Thank you very much!