我正在尝试从ServiceNow收集变更记录信息。具体来说,我想查询一个主机名,并查找该服务器是否已打开变更凭单。我为Ansible遇到了这两个模块。要使它们正常运行,我收效甚微。我希望我的语法不好,或者我在做一些愚蠢的事情。这是我的剧本。
- 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
对于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"
关于如何使用这些模块,似乎没有很多示例或文档。我愿意使用其他方法,只要它可以通过bash,Python,Ansible或其他在Linux上运行的命令行实用程序完成即可。如果您想自己尝试,我也从https://github.com/garbled1/ansible_modules那里获取了snow_record_find模块。
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
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",