Джинджа в CSV через Ansible playbook - PullRequest
       8

Джинджа в CSV через Ansible playbook

0 голосов
/ 16 октября 2018

Я пытался разобрать 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 
...