name: debug ping result vars: ansible_connection: local result: "{{ item.stdout[0] | parse_cli_textfsm('/usr/share/ansible/plugins/textfsm/ping') | json_query('[0]') | json_format }}" commandsH: { command: "ping {{item.item.vrf}} {{item.item.dest}} " } debug: msg: "{{result}} {{ commandsH }}" when: params is defined and item.skipped is not defined and item is succeeded loop: "{{ pingresult4.results | union(pingresult6.results) }}" - name: save ping vars: ansible_connection: local result: "{{ item.stdout[0] | parse_cli_textfsm('/usr/share/ansible/plugins/textfsm/ping') | json_query('[0]') | json_format }}" set_result: "{{ result is string | ternary(default_result, result) }}" isAlive: { isAlive: "{{ set_result.RATE > 0 | ternary(True, False) }}", RATE: "{{ set_result.RATE }}" } commandsH: { command: "ping {{item.item.vrf}} {{item.item.dest}} " } uri: url: "http://localhost:{{runServerPort}}/kafka/PerfRaw" method: POST body_format: json return_content: yes body: # 毫秒级,date命令不能计算毫秒,直接拼接 # 使用!!强制类型转换为int报错,原因尚未明确 taskId: "{{ id }}" extendInfo: "{{ item.item.extendInfo | default({}) | combine(commandsH) }}" ipFrom: "{{ host.ip }}" ip: "{{ item.item.dest }}" taskFinishTime: "{{ lookup('pipe','date +%s000') }}" result: { rping: "{{ set_result | combine(isAlive) | json_format }}" } taskType: monitor workerType: ansible monitorItemType: "{{item.item.monitorItemType}}" monitorItemList: "{{item.item.monitorItemList}}" register: this failed_when: "'\"code\":0' not in this.content" when: params is defined and item.skipped is not defined and item is succeeded loop: "{{ pingresult4.results | union(pingresult6.results) }}"
时间: 2024-04-27 19:20:51 浏览: 224
ansible_stdout_compact_logger:Ansible Stdout紧凑型记录仪
这部分代码是将 rping 的结果进行处理并保存到数据库中的过程,其中包含了两个 task。第一个 task 是将 rping 的结果进行格式化并输出到控制台,第二个 task 是将结果保存到数据库中。
在第一个 task 中,使用 `json_query` 函数和 `json_format` 过滤器将 `item.stdout` 中的 ping 结果转换为 JSON 格式,并存储在 `result` 变量中。然后使用 `debug` 模块打印出结果和相应的命令。`loop` 参数用于遍历 `pingresult4.results` 和 `pingresult6.results` 中的所有结果。
在第二个 task 中,使用 `uri` 模块将结果保存到数据库中。`body` 参数是一个 JSON 对象,其中包含了需要保存的信息,例如 taskId、extendInfo、ipFrom、ip、taskFinishTime、result 等字段。这些字段的具体含义需要根据实际情况进行理解和修改。`register` 参数用于将保存结果的返回值存储到 `this` 变量中,`failed_when` 参数用于判断请求是否成功。
注意,这段代码中的 `id`、`runServerPort`、`host.ip`、`item.item.extendInfo`、`item.item.monitorItemType`、`item.item.monitorItemList` 等变量的值需要根据实际情况进行修改。
阅读全文