ANSIBLE - Как создать массив с фильтром stdout_lines по столбцам - PullRequest
0 голосов
/ 20 марта 2020

Утро,

с ansible У меня есть stdout_lines:

ok: [localhost] => {
    "msg": [
        "1 peot 11135198 NY",
        "1 LIOS 106075056 berlin",
        "1 EASD 10828842 london",
        "1 APES 20789896 local",
        "1 PZSA 21705924 paris"
    ]
}

Мне нужно получить второй и четвертый столбец и сохранить его в массиве. но я не нахожу пример с фильтром в столбце.

так что же является лучшим решением? с Ansible оу в Jinja2?

спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Я пытаюсь отклонить твой код, но что-то ускользает от меня. для получения 2-го первого столбца поиска result.stdout_lines:

extract:

-rwxr-xr-x 1 root root 11135198 Sep 25  2018 /root/setup/silinstall/nnstall
-rw-r--r-- 1 root root 106075056 Dec 19 14:33 /usr/lib/locale/locale-archive
-rwxr-xr-x 1 root root 10828842 Jan 27  2015 /usr/lib/libsssymm-dmx.so

если я хочу только первый и пятый столбцы, я устанавливаю переменные следующим образом:

  vars:
    myregex: '^\s*(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s*$' (number of columns)
    myreplace: '\1 \5'

результат:

    "myarray": [
        "-rwxr-xr-x 1 Sep",
        "-rw-r--r-- 106075056",<-----------why this error ???
        "-rwxr-xr-x 1 Jan",
        "-rwxr-xr-x. 1 Aug",
        "-rwxr-xr-x 1 Sep"
    ]
}

Я не понимаю, почему у меня неправильный столбец.

0 голосов
/ 20 марта 2020

Q: "Мне нужно получить второй и четвертый столбец и сохранить его в массиве."

A: Возможно использовать regex_replace , Например,

    - set_fact:
        myarray: "{{ stdout_lines|
                     map('regex_replace', myregex, myreplace)|
                     list }}"
      vars:
        myregex: '^\s*(.*)\s+(.*)\s+(.*)\s+(.*)\s*$'
        myreplace: '\2 \4'
    - debug:
        var: myarray

Give

    "myarray": [
        "peot NY", 
        "LIOS berlin", 
        "EASD london", 
        "APES local", 
        "PZSA paris"
    ]

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

...