Разбор CSV с Ansible - PullRequest
       6

Разбор CSV с Ansible

0 голосов
/ 07 октября 2019

Мне нужно проанализировать CSV с Ansible. Проблема, с которой я сталкиваюсь, заключается в том, что у меня нет фиксированных столбцов, они являются переменными. Например: мне нужно извлечь информацию о сети и использовать ее для настройки гостевых сетей vmware. В этом случае у меня может быть CSV с этими:

(другие столбцы) Nic1_Vlan Nic1_IP Nic1_MASK Nic1_Scope (другие столбцы)

В противном случае я могу иметь это:

(другие столбцы) Nic1_Vlan Nic1_IP Nic1_MASK Nic1_Scope Nic2_Vlan Nic2_IP Nic2_MASK Nic2_Scope (другие столбцы)

У меня может быть только 1 ник или 3 в одном кадре. Есть ли у вас какие-либо подсказки об этом сценарии? Вы бы использовали jinja2 или считаете, что лучше использовать переменные файлы json / yaml?

Спасибо за любой ответ !! Привет

1 Ответ

0 голосов
/ 07 октября 2019

Например, игра ниже

- hosts: localhost
  vars:
    rec_len: 4
    delimeter: ' '
  tasks:
    - set_fact:
        nics: "{{ (lookup('file', 'data.csv')|trim).split(delimeter) }}"
    - set_fact:
        len: "{{ (nics|length/rec_len)|int }}"
    - set_fact:
        nics_list: "{{ nics_list|default([]) + [[
                       nics[(item*rec_len)|int],
                       nics[(item*rec_len+1)|int],
                       nics[(item*rec_len+2)|int],
                       nics[(item*rec_len+3)|int] ]] }}"
      loop: "{{ range(0, len|int)|list }}"
    - debug:
        msg: "{{ item }}"
      loop: "{{ nics_list }}"

дает

ok: [localhost] => (item=[u'Nic1_Vlan', u'Nic1_IP', u'Nic1_MASK', u'Nic1_Scope']) => {
    "msg": [
        "Nic1_Vlan", 
        "Nic1_IP", 
        "Nic1_MASK", 
        "Nic1_Scope"
    ]
}
ok: [localhost] => (item=[u'Nic2_Vlan', u'Nic2_IP', u'Nic2_MASK', u'Nic2_Scope']) => {
    "msg": [
        "Nic2_Vlan", 
        "Nic2_IP", 
        "Nic2_MASK", 
        "Nic2_Scope"
    ]
}

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...