gpt4 book ai didi

list - 从列表中提取元素并将其设置为变量 (set_fact)

转载 作者:行者123 更新时间:2023-12-05 05:58:07 27 4
gpt4 key购买 nike

我将以下列表作为额外变量传递给我的脚本

ansible-playbook /home/ec2-user/ansible/start.yml --extra-vars  multi_config=['aa|111','bb|222','cc|444']

这是我发现传递包含列表或键/值(使用 | 分隔符)的变量的唯一方法,我不能使用 json 文件作为参数...

我想循环此 multi_config 列表并搜索包含“bb”的元素,然后使用 set_fact 将其设置为一个变量以便稍后使用。

我可以这样加载列表:

- name: set multi_config
set_fact:
multi_config: "{{ multi_config}}"
when: multi_config is defined

但是如何提取包含“bb”的元素呢?

最佳答案

从命令行传递给 Ansible 的额外变量总是字符串,例如

    - debug:
msg: "{{ multi_config|type_debug }}"

给予

  msg: str

使用过滤器 from_yaml 并将字符串转换为列表并迭代项目。如何解析数据有很多选择。比如拆分键值,组合一个字典

    - set_fact:
mc_dict: "{{ mc_dict|default({})|combine({_key: _val}) }}"
loop: "{{ multi_config|from_yaml }}"
vars:
_key: "{{ item.split('|').0 }}"
_val: "{{ item.split('|').1 }}"

给予

  mc_dict:
aa: '111'
bb: '222'
cc: '444'

关于list - 从列表中提取元素并将其设置为变量 (set_fact),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68624270/

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