You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中提取Inventory列表中Job字段的值?

Ansible提取Inventory中列表的Job值方法

有两种常用方法可以从你的Inventory列表里提取Job值:

方法一:拆分字符串筛选提取

通过拆分department字段的字符串,逐步筛选出目标值:

- name: 提取Job值
  hosts: localhost
  vars:
    employee_list:
      - { emp_id: 101, name: Kiven, department: "id=10,job=IT", number: 00014646}
  tasks:
    - name: 拆分并提取job值
      set_fact:
        job_value: "{{ item.department.split(',') | select('search', 'job=') | first | split('=') | last }}"
      loop: "{{ employee_list }}"
      register: job_results

    - name: 打印结果
      debug:
        msg: "提取的Job值为: {{ job_results.results[0].ansible_facts.job_value }}"

步骤说明:

  • split(',')把department字符串拆成["id=10", "job=IT"]
  • select('search', 'job=')筛选出包含job=的元素
  • first取筛选后的第一个元素(这里只有一个匹配项)
  • 再次split('=')把job=IT拆成["job", "IT"],last取最后一个值就是IT

方法二:正则表达式匹配

用正则直接捕获job=后面的内容,更简洁:

- name: 正则提取Job值
  hosts: localhost
  vars:
    employee_list:
      - { emp_id: 101, name: Kiven, department: "id=10,job=IT", number: 00014646}
  tasks:
    - name: 匹配job值
      set_fact:
        job_value: "{{ item.department | regex_search('job=(\\w+)', '\\1') | first }}"
      loop: "{{ employee_list }}"
      register: job_results

    - name: 输出结果
      debug:
        msg: "提取的Job值是: {{ job_results.results[0].ansible_facts.job_value }}"

步骤说明:

  • regex_search('job=(\\w+)', '\\1')匹配job=后面的字母数字组合,\\1是捕获组,专门提取匹配到的内容
  • first取出捕获到的结果值

内容的提问来源于stack exchange,提问作者Youssef CH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:27:16