我只想从下面的输出中提取一个值,确切地说,就是主机行。
比如:
host: host-1.example.com剧本本身:
---
- name: Get fortios_configuration_fact
hosts: fortigate
connection: httpapi
collections:
- fortinet.fortios
gather_facts: no
vars:
ansible_httpapi_port: 4443
ansible_httpapi_use_ssl: yes
ansible_httpapi_validate_certs: no
username: some-name
tasks:
- name: Retrieve Facts of FortiOS Configurable Objects
fortinet.fortios.fortios_configuration_fact:
access_token: "{{ vault_access_token }}"
selector: "vpn.ssl.web_user-bookmark"
formatters:
- bookmarks
params:
name: "{{ username }}"
sorters:
- logon-user
register: ssl_vpn_results
- ansible.builtin.debug:
msg: "{{ ssl_vpn_results.meta.results }}"我有一个不可信的输出:
- bookmarks:
- additional-params: ''
apptype: vnc
color-depth: '16'
description:
domain: ''
folder: ''
form-data: []
host: host-1.example.com
keyboard-layout: en-us
load-balancing-info: ''
logon-password: ENC XXXX
logon-user: some-user
name: some-name
port: 5909
preconnection-blob: ''
preconnection-id: 0
q_origin_key: some-description
restricted-admin: disable
security: rdp
send-preconnection-id: disable
sso: disable
sso-credential: sslvpn-login
sso-credential-sent-once: disable
sso-password: ''
sso-username: ''
url: ''
custom-lang: ''
name: some-name
q_origin_key: some-description没有调试消息中的“.meta.results”,我有以下输出:
ok: [fortinet_vd] =>
msg:
changed: false
failed: false
meta:
build: 234
http_method: GET
http_status: 200
mkey: user-mkey
name: user-bookmark
path: vpn.ssl.web
results:
- bookmarks:
- additional-params: ''
apptype: vnc
color-depth: '16'
description: some-description
domain: ''
folder: ''
form-data: []
host: host-1.example.com
keyboard-layout: en-us
load-balancing-info: ''
logon-password: ENC XXXX
logon-user: some-user
name: some-name
port: 5909
preconnection-blob: ''
preconnection-id: 0
q_origin_key: some-user
restricted-admin: disable
security: rdp
send-preconnection-id: disable
sso: disable
sso-credential: sslvpn-login
sso-credential-sent-once: disable
sso-password: ''
sso-username: ''
url: ''
revision: 9e0c1a3432bb884fdebaeaefdb0a51be
serial: serial-nbr
status: success
vdom: root
version: v7.0.2我尝试了许多ansible过滤器来操作数据,但是失败了。
你能帮我提点主意吗?
发布于 2022-04-01 14:35:23
属性结果和书签都是列表。您可以从列表中获得第一项。
- debug:
msg: "{{ ssl_vpn_results.meta.results.0.bookmarks.0.host }}"给出
msg: host-1.example.com结果和书签中可能有更多的项目。您可以使用json_query选择所有主机。
- debug:
msg: "{{ ssl_vpn_results.meta.results|
json_query('[].bookmarks[].host') }}"给出清单
msg:
- host-1.example.com您还可以迭代结果并列出特定项的所有主机。
- debug:
msg: "{{ item.name }}: {{ item.bookmarks|json_query('[].host') }}"
loop: "{{ ssl_vpn_results.meta.results }}"
loop_control:
label: "{{ item.name }}"给出
TASK [debug] *******************************************************
ok: [localhost] => (item=some-name) =>
msg: 'some-name: [''host-1.example.com'']'发布于 2022-04-01 14:34:03
您必须完成以下任务:结果和_bookmark_s是列表
- name: display
debug:
msg: the value of host is {{ ssl_vpn_results.meta.results.0.bookmarks.0.host }}你得到了想要的结果!!
https://stackoverflow.com/questions/71706775
复制相似问题