【问题标题】:Ansible jinja templating: variable number of group keysAnsible jinja 模板:可变数量的组键
【发布时间】:2021-01-07 23:43:46
【问题描述】:

我正在编写一个 shell ansible 脚本,我需要做的一件事是使用 jinja2 从库存文件中填充 ini 文件中的列表。

目前它使用变量 component_group_1 和 component_group_2 作为组键,并从那里填充组件列表

components: "{{groups[component_group_1]+groups[component_group_2]}}"

我如何重写这一行,以便它可以只使用一个名为 all_component_groups 的变量,它具有这种模式“客户、供应商、产品...”中所需的所有组键,以及在哪里可以是任意数量的组键?

【问题讨论】:

    标签: shell ansible jinja2 ini


    【解决方案1】:

    将您的 var 作为列表会容易得多:

    all_component_groups_list:
      - group1
      - group2
      - group3
    

    同时,从您的模式创建列表非常容易

    all_components_groups: "customers,vendors,products"
    all_components_groups_list: "{{ all_components_groups.split(',') }}"
    

    一旦你知道了,剩下的也很容易:

    1. map => extractgroups字典中提取相关列表
    2. flatten 列表列表以获取包含所有值的单个列表
    3. 使用unique 过滤器删除可能的重复值

    根据您的逗号分隔列表要求将所有内容放在一起

    components: "{{ all_component_groups.split(',') | map('extract', groups) | flatten | unique }}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多