Ansible 从输出中提取值

问题描述 投票:0回答:1

我有一个 Web API 调用,可以获取网络设备详细信息并输出一些不同的值。我想从此输出中提取交换机名称和交换机端口,并将它们单独注册为变量以供另一个任务调用。但我不确定如何实现这一点。

Config:

<some task config omitted>
      register: spm_results

    - debug:
        var: spm_results.content

输出:

ok: [localhost] => {
    "spm_results.content": "00:1a:1e:cd:84:e2,Aruba a Hewlett Packard Enterprise Compa,M-1-DA,Gi3/0/4,prod,10.7.5.60\n"
}

我想根据这种类型的正则表达式 [a-zA-Z]-[0-999]-D[a-zA-Z] 和交换机端口来匹配交换机名称(上面输出中的 M-1-DA)通过查找 ^Gi 并将它们注册为不同的变量。

任何帮助将不胜感激!

无法找到完成此操作所需的特定代码

ansible
1个回答
0
投票

分割线。你可以先修剪

  content: "{{ spm_results.content | trim | split(',') }}"

给予

  content:
  - 00:1a:1e:cd:84:e2
  - Aruba a Hewlett Packard Enterprise Compa
  - M-1-DA
  - Gi3/0/4
  - prod
  - 10.7.5.60

物品的搭配很简单

  mac: "{{ content.0 }}"
  vendor: "{{ content.1 }}"
  switch: "{{ content.2 }}"
  port: "{{ content.3 }}"
  env: "{{ content.4 }}"
  ip: "{{ content.5 }}"
© www.soinside.com 2019 - 2024. All rights reserved.