#api #rest #ansible #yaml #ansible-2.x
#API #rest #ansible #yaml #ansible-2.x
Вопрос:
В настоящее время мы вручную отслеживаем панели мониторинга splunk во время наших развертываний. Мы хотели бы автоматизировать это. Для этого мы хотели бы создать ansible playbook с запросами splunk. Этот сборник будет запущен во время развертывания.
Я успешно могу подключиться к splunk, но я не могу заставить работать поисковый запрос
####
# type: task
#
# vars:
# 5xxcheck_output(str,command): raw output from command
# 5xxcheck_response(str,command): raw output to json
#
# desc:
# uses splunk to get 5xxcheck
---
- name: Tasks to query splunk
hosts: localhost
connection: local
tasks:
- name: get search_id for 5xx check from splunk
uri:
url: https://<splunk_instance>/services/search/jobs
follow_redirects: all
method: POST
user: xxxxxx
password: xxxxxxx
force_basic_auth: yes
body: "search host=tc1* ResponseCode=500 earliest=-15m"
body_format: raw
validate_certs: no
status_code: 201
return_content: true
register: search_id
- debug: msg="{{ search_id.status }}"
- name: use the search_id to get the 5xx check results
uri:
url: https://<splunk_instance>/services/search/jobs/{{ search_id }}/results/
method: GET
user: xxxxxx
password: xxxxxxx
force_basic_auth: yes
body_format: raw
return_content: true
register: 5xxcheck_output
until: 5xxcheck_output.status > 0 and 5xxcheck_output.status != 500
- name: Put results into 5xxcheck_response
set_fact:
5xxcheck_response: "{{ 5xxcheck_output.json }}"
- name: Print 5xxcheck_response if -v
debug:
var: 5xxcheck_response
verbosity: 1
Я хотел бы использовать модуль uri для параметризации поиска splunk. Я могу выполнить следующие 2 шага из терминала, чтобы получить ответ
Шаг 1: получить SID (идентификатор поиска)
curl -u user:pwd -k https://<splunk-instance>/services/search/jobs -d search="search host=t1* ResponseCode=200 earliest=-15m"
<?xml version="1.0" encoding="UTF-8"?>
<response>
<sid>1604947864.xxxxxx</sid>
</response>
Шаг 2: используйте SID для получения ответа
curl -u user:pwd -k https://<splunk-instance>/services/search/jobs/<SID>/results/ --get -d output_mode=raw
Комментарии:
1. Пожалуйста, предоставьте результат первой команды curl,
2. @garylopez обновил ответ первой команды curl. По сути, он возвращает sid (search_id)
Ответ №1:
---
- name: Tasks to query splunk
hosts: localhost
connection: local
tasks:
- name: get search_id for 5xx check from splunk
uri:
url: https://splunk_instance/services/search/jobs/
follow_redirects: all
method: POST
user: xxxxx
password: xxxxx
force_basic_auth: yes
body_format: form-urlencoded
status_code: [200, 201, 202]
body:
- [ search, "search host=t1* ResponseCode=500 earliest=-15m" ]
- [ output_mode, "json" ]
validate_certs: no
return_content: true
register: search_id
- debug: msg="{{ search_id }}"
Это сработало для меня. Теперь я получаю действительный sid в качестве ответа при запуске этого сборника.