Ansible:如何将 shell 命令输出转换为项目或变量

new*_*ble 5 ansible

我正在我的剧本中运行 shell 命令来提取命令的结果。的输出

- debug: msg="{{ dblist.stdout_lines }}"
Run Code Online (Sandbox Code Playgroud)

ok: [host] => {
    "msg": [
"inst1:db1"
"inst1:db2"
"inst1:db3"
"inst2:db4"
"inst2:db3"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我需要以一种允许我运行下一个剧本的格式存储该值,同时考虑 item.0 的值作为 inst1 和 item.1 的值作为 db2 等等。

现在

- debug: msg="{{ item.0 }} has  a value {{ item.1 }}"
  with_items: "{{ dblist.stdout_lines }}"
Run Code Online (Sandbox Code Playgroud)

给出像这样的值

ok: [host] => (item=inst1:db1) => {
    "msg": "i has  a value n"
}
ok: [host] => (item=inst1:db2) => {
    "msg": "i has  a value n"
Run Code Online (Sandbox Code Playgroud)

谢谢。

Vla*_*tka 4

例如

    - debug:
        msg: "{{ _key }} has a value {{ _val }}"
      loop: "{{ dblist.stdout_lines }}"
      vars:
        _arr: "{{ item.split(':') }}"
        _key: "{{ _arr.0 }}"
        _val: "{{ _arr.1 }}"
Run Code Online (Sandbox Code Playgroud)

给出

  msg: inst1 has a value db1
  msg: inst1 has a value db2
  msg: inst1 has a value db3
  msg: inst2 has a value db4
  msg: inst2 has a value db3
Run Code Online (Sandbox Code Playgroud)