I’m trying to gather change record information from ServiceNow. Specifically I would like to query against a hostname and find if that server has change ticket open. I came across both of these modules for Ansible. I have had little success getting them to function properly. I’m hoping my syntax is bad or I’m doing something dumb. Here are my playbooks.
- hosts: localhost
connection: local
gather_facts: no
ignore_errors: True
tasks:
- name: Grab a user record
snow_record:
username: testuser
password: somepass
instance: myinstance
state: present
number: CHG9999
table: change_request
lookup_field: cmdb_ci.name=someservername
For snow_record_find:
- hosts: mytest
tasks:
- name: Grab a user record
snow_record_find:
username: testuser
password: somepass
instance: someinstance
#state: present
#number: null??
table: change_request
query:
AND:
equals:
active: "True"
type: "standard"
u_change_stage: "80"
contains:
u_template: "MY-Template"
There does not seem to be many examples or documents on how to use these modules. I’m open to using something different as long as it can be done via bash, Python, Ansible or some other command line utility that runs on Linux. Also I grabbed the snow_record_find module from https://github.com/garbled1/ansible_modules If you want to try it yourself.
Error output for snow_record:
The full traceback is:
Traceback (most recent call last):
File "/root/.ansible/tmp/ansible-tmp-1553017980.16-56687342300902/AnsiballZ_snow_record.py", line 113, in <module>
_ansiballz_main()
File "/root/.ansible/tmp/ansible-tmp-1553017980.16-56687342300902/AnsiballZ_snow_record.py", line 105, in _ansiballz_main
invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
File "/root/.ansible/tmp/ansible-tmp-1553017980.16-56687342300902/AnsiballZ_snow_record.py", line 48, in invoke_module
imp.load_module('__main__', mod, module, MOD_DESC)
File "/tmp/ansible_snow_record_payload_0p5jn8/__main__.py", line 332, in <module>
File "/tmp/ansible_snow_record_payload_0p5jn8/__main__.py", line 328, in main
File "/tmp/ansible_snow_record_payload_0p5jn8/__main__.py", line 317, in run_module
AttributeError: 'module' object has no attribute 'UnexpectedResponse'
fatal: [localhost]: FAILED! => {
"changed": false,
"module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-tmp-1553017980.16-56687342300902/AnsiballZ_snow_record.py\", line 113, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-tmp-1553017980.16-56687342300902/AnsiballZ_snow_record.py\", line 105, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-tmp-1553017980.16-56687342300902/AnsiballZ_snow_record.py\", line 48, in invoke_module\n imp.load_module('__main__', mod, module, MOD_DESC)\n File \"/tmp/ansible_snow_record_payload_0p5jn8/__main__.py\", line 332, in <module>\n File \"/tmp/ansible_snow_record_payload_0p5jn8/__main__.py\", line 328, in main\n File \"/tmp/ansible_snow_record_payload_0p5jn8/__main__.py\", line 317, in run_module\nAttributeError: 'module' object has no attribute 'UnexpectedResponse'\n",
"module_stdout": "",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1
Error output for snow_record_show:
atal: []: FAILED! => {
"changed": false,
"module_stderr": "Shared connection to closed.\r\n",
"module_stdout": "Traceback (most recent call last):\r\n File \"/root/.ansible/tmp/ansible-tmp-1553019300.21-10858374496170/AnsiballZ_snow_record_find.py\", line 113, in <module>\r\n _ansiballz_main()\r\n File \"/root/.ansible/tmp/ansible-tmp-1553019300.21-10858374496170/AnsiballZ_snow_record_find.py\", line 105, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File \"/root/.ansible/tmp/ansible-tmp-1553019300.21-10858374496170/AnsiballZ_snow_record_find.py\", line 48, in invoke_module\r\n imp.load_module('__main__', mod, module, MOD_DESC)\r\n File \"/tmp/ansible_snow_record_find_payload_j9P62r/__main__.py\", line 260, in <module>\r\n File \"/tmp/ansible_snow_record_find_payload_j9P62r/__main__.py\", line 257, in main\r\n File \"/tmp/ansible_snow_record_find_payload_j9P62r/__main__.py\", line 249, in run_module\r\n File \"/usr/lib/python2.7/site-packages/pysnow/legacy_request.py\", line 91, in _all_inner\r\n yield self._get_content(response)\r\n File \"/usr/lib/python2.7/site-packages/pysnow/legacy_request.py\", line 332, in _get_content\r\n server_error['summary'], server_error['details']\r\npysnow.legacy_exceptions.UnexpectedResponse: Unexpected HTTP GET response code. Expected 200, got 401\r\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",