簡體   English   中英

Ansible,根據變量名稱的模式匹配動態創建字典列表

[英]Ansible, dynamically create list of dictionaries from pattern match of variable names

我正在嘗試從以類似方式命名的退出變量在 Ansible 中動態創建字典列表。 我無法真正修改現有變量,因為它們被項目中的其他事物使用。

假設以下變量已經存在:

item_1a:
  name: first test item
  value: 100

item_2a: 
  name: second test item
  value: 200
  options: extra

item_zz:
  name: last test item
  option: nameless

我需要從名稱匹配^item_*所有變量動態創建什么:

dynamic_list:
  - name: first test item
    value: 100
  - name: second test item
    value: 200
    options: extra
  - name: last test item
    option: nameless

我可以以任何方式按名稱模式查詢變量嗎?

例如,下面的任務完成了這項工作

    - set_fact:
        dynamic_list: "{{ my_vars|map('extract', vars)|list }}"
      vars:
        my_vars: "{{ vars|select('match', '^item_.*$')|list }}"

  dynamic_list:
  - name: first test item
    value: 100
  - name: second test item
    options: extra
    value: 200
  - name: last test item
    option: nameless

我最終通過以下方式獲得了列表,

  vars:
    varname_list: "{{ query(varnames, '^item_.*$') }}"
    dynamic_list: "{{ varname_list | map('extract', vars) | list }}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM