gpt4 book ai didi

variables - Ansible:使命令的输出成为下一个命令的键值项/变量

转载 作者:行者123 更新时间:2023-12-04 01:57:33 25 4
gpt4 key购买 nike

我想将此输出(来自上一个命令)用作键值数组或用作同一剧本中下一个命令的 list

stdout:
hot-01: 10.100.0.101
hot-02: 10.100.0.102
hot-03: 10.100.0.103
....
hot-32: 10.100.0.132

像这样:

- shell: "echo {{ item.key }} has value {{ item.value }}"
with_items: "{{ output.stdout_lines }}"

或:

- add_host: name={{ item.key }} ansible_ssh_host={{ item.value }}
with_items: "{{ output.stdout_lines }}"

echo 命令的期望输出:

hot-01 has value 10.100.0.101

我也试过 with_dict: "{{ output.stdout }}"但还是不行

"fatal: [ANSIBLE] => with_dict expects a dict"

最佳答案

据我所知,没有 Jinja2 过滤器可以将字符串转换为字典。

但在您的特定情况下,您可以使用 python's split string function将键与值分开:

- shell: "echo {{ item.split(': ')[0] }} has value {{ item.split(': ')[1] }}"
with_items: "{{ output.stdout_lines }}"

我知道,不得不使用 split 两次有点草率。

在这种情况下,您的输出是有效的 YAML,您还可以执行以下操作:

- shell: "echo {{ item.key }} has value {{ item.value }}"
with_dict: "{{ output.stdout | from_yaml }}"

作为最后的手段,您还可以创建自己的 ansible 模块来创建 Jinja2 过滤器来涵盖您的案例。这里有一个 split 模块过滤器,您可以将其用作灵感:https://github.com/timraasveld/ansible-string-split-filter

关于variables - Ansible:使命令的输出成为下一个命令的键值项/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677112/

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