gpt4 book ai didi

ansible - 如何从 ansible 中的 stdout.lines 中提取准确的输出

转载 作者:行者123 更新时间:2023-12-05 05:13:14 25 4
gpt4 key购买 nike

我的 Ansible 剧本:

#Tag --> B.6 -->
- name: Change the Security Realm to CustomRealm from ManagementRealm
command: /jboss-as-7.1.1.Final/bin/jboss-cli.sh --connect--command="/core-service=management/management-interface=http-interface:read-attribute(name=security-realm)"
register: Realm

- debug:
msg: "{{ Realm.stdout_lines }}"

消息中上述命令的输出如下:

ok: [342f2f7bed8e] => {
"msg": [
"{",
" \"outcome\" => \"success\","
" \"result\" => \"ManagementRealm\"",
"}"
]
}

有没有一种方法可以准确地确定“结果”=>“ManagementRealm”。我尝试使用

Realm.stdout_lines.find('result')

但是失败了,AWk 和 grep 命令在这里似乎不起作用。

非常感谢任何想法。

谢谢你

最佳答案

我认为有几种方法可以解决这个问题。

1) 在输出到达 Ansible 之前对其进行 Grep:

# Note the change of 'command' to 'shell'
- name: Change the Security Realm to CustomRealm from ManagementRealm
shell: /jboss-as-7.1.1.Final/bin/jboss-cli.sh --connect--command="/core-service=management/management-interface=http-interface:read-attribute(name=security-realm)" | grep -o 'result.*'
register: Realm

2) 如果源脚本的输出总是 4 行,你可以只抓取第 3 行:

# List indexes start at 0
- debug:
msg: "{{ Realm.stdout_lines[2] | regex_replace('^ *(.*$)', '\\1') }}"

3) 如果您可以选择修改 jboss-cli.sh,最好的方法是让 jboss-cli.sh 输出有效的 JSON,然后 Ansible 可以解析它:

# Assuming jboss-cli.sh produces {"outcome": "success", "result": "ManagementRealm"}
- set_fact:
jboss_data: "{{ Realm.stdout | from_json }}"
- debug:
var: jboss_data.result

关于ansible - 如何从 ansible 中的 stdout.lines 中提取准确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53846989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com