Ansible 如何从可解释的事实中选择匹配的行?

Ansible 如何从可解释的事实中选择匹配的行?,ansible,Ansible,存在具有ansible_事实操作的ansible任务: - name: "Output facts" debug: msg: CPU_TYPE: "{{ansible_processor|select('match', '.*CPU.*')|list|unique}}" register: custom_result 如何从该阵列中选择包含CPU的线路: "CPU_TYPE": [ "0", "GenuineIntel",

存在具有ansible_事实操作的ansible任务:

- name: "Output facts"
  debug: 
    msg:
     CPU_TYPE: "{{ansible_processor|select('match', '.*CPU.*')|list|unique}}"
  register: custom_result
如何从该阵列中选择包含CPU的线路:

    "CPU_TYPE": [
        "0",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
        "1",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
        "2",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
        "3",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
        "4",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
        "5",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
        "6",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
        "7",
        "GenuineIntel",
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz"
    ],
目前我得到了一个错误:

"CPU_TYPE": "<generator object select_or_reject at 0x7facb2065930>",
由此:

    "CPU_TYPE": [
        "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz"
        ],
为此:

    "CPU_TYPE": "Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz"
问:“我得到了错误:”

“CPU类型”:“

A:从所选项目创建列表

CPU_TYPE: "{{ ansible_processor|select('match', '.*CPU.*')|list }}"

例如,打印列表的第一个元素

- set_fact:
    CPU_TYPE: "{{ ansible_processor|select('match', '.*CPU.*')|list }}"
- debug:
    msg: "{{ CPU_TYPE[0] }}"
使用过滤器
unique
仅在列表中保留唯一项。使用filter
first
选择列表的第一项。比如说

- set_fact:
    CPU_TYPE_FIRST: "{{ ansible_processor|
                        select('match', '.*CPU.*')|
                        list|
                        unique|
                        first }}"

谢谢,请回答如何从括号中获取值,如:“CPU类型”:“Intel(R)Core(TM)i7-8550U CPU@1.80GHz”谢谢,无法通过筛选器执行此操作。
first
筛选器可以选择第一项。我已经更新了答案。谢谢,但是这样做聪明吗:
{{ansible_processor}select('match','.*CPU.')| list | unique | json_query('[0]')}
?在您的情况下,列表中的所有项都是相等的。结果将是一个仅包含一项的列表。在
first
json_查询('[0]')
中没有区别
json\u查询
是一个值得回顾的强大工具。
- set_fact:
    CPU_TYPE_FIRST: "{{ ansible_processor|
                        select('match', '.*CPU.*')|
                        list|
                        unique|
                        first }}"