Я пытался разобрать CSV с помощью Jinja через ANSIBLE PlayBook.Проблема у меня заключается в том, чтобы сравнить хост между строками в следующую строку.
{% for item in csvfile.split("\n") %}
{% if loop.index != 1 %}
{% set list = item.split(",") %}
{% set host = list[12]|trim() %}
{% set count = loop.index + 1 %}
host: '{{ list[12]|trim() }}'
{% if host == ?? %}
- interface: '{{ list[13]|trim() }}/{{ list[14]|trim() }}'
mode: 'access'
vlan: '{{ list[19]|trim() }}'
description: '{{ list[3]|trim() }}'
{% endif %}
{% endif %}
{% endfor %}
CSV-файл:
,,,,,,DATA,,,,,Y,switch01,Eth1/1,,192.168.1.11,255.255.255.0,192.168.1,,
,,,,,,DATA,,,,,Y,switch01,Eth1/2,,192.168.1.12,255.255.255.0,192.168.1,,
,,,,,,DATA,,,,,Y,switch02,Eth1/1,,192.168.1.13,255.255.255.0,192.168.1,,
,,,,,,DATA,,,,,Y,switch02,Eth1/2,,192.168.1.14,255.255.255.0,192.168.1,,
,,,,,,DATA,,,,,Y,switch03,Eth1/1,,192.168.1.15,255.255.255.0,192.168.1,,
Я хочу проанализировать данные следующим образом:
host switch01
- interface: Eth1/1
ip: 192.168.1.11
mask: 255.255.255.0
gw: 192.168.1.1
- interface: Eth1/2
ip: 192.168.1.12
mask: 255.255.255.0
gw: 192.168.1.1
host switch02:
- interface: Eth1/1
ip: 192.168.1.12
mask: 255.255.255.0
gw: 192.168.1.1
host switch03:
- interface: Eth1/1
ip: 192.168.1.12
mask: 255.255.255.0
gw: 192.168.1.1