Spec-Zone.ru › Ansible

Преобразования

Разбор CSV-файлов

Ansible предлагает модуль community.general.read_csv для чтения CSV-файлов. Иногда вместо этого требуется преобразовать строки в CSV-файлы. Для этого существует фильтр community.general.from_csv.

- name: "Parse CSV from string"
  debug:
    msg: "{{ csv_string | community.general.from_csv }}"
  vars:
    csv_string: |
      foo,bar,baz
      1,2,3
      you,this,then

Результат:

TASK [Parse CSV from string] **************************************************************
ok: [localhost] => {
    "msg": [
        {
            "bar": "2",
            "baz": "3",
            "foo": "1"
        },
        {
            "bar": "this",
            "baz": "then",
            "foo": "you"
        }
    ]
}

Фильтр community.general.from_csv имеет несколько именованных аргументов, позволяющих управлять его поведением:

dialect:

Диалект CSV-файла. По умолчанию используется excel. Другие возможные варианты: excel-tab и unix. Если указан один из вариантов delimiter, skipinitialspace или strict, параметр dialect игнорируется.

fieldnames:

Набор имен столбцов. Если он не указан, предполагается, что первая строка CSV-файла содержит имена столбцов.

delimiter:

Задает используемый разделитель. Значение по умолчанию зависит от используемого диалекта.

skipinitialspace:

Установите значение true, чтобы игнорировать пробелы непосредственно после разделителя. Значение по умолчанию зависит от используемого диалекта (обычно false).

strict:

Установите значение true, чтобы выдавать ошибку при некорректных входных данных CSV.

Преобразование в JSON

JC — это инструмент командной строки и библиотека Python, позволяющие интерпретировать вывод различных программ командной строки в формате JSON. Он также доступен в community.general в виде фильтра под названием community.general.jc. Для работы этого фильтра на управляющем узле необходимо установить библиотеку Python jc.

- name: Run 'ls' to list files in /
  command: ls /
  register: result

- name: Parse the ls output
  debug:
    msg: "{{ result.stdout | community.general.jc('ls') }}"

Результат:

TASK [Run 'ls' to list files in /] ********************************************************
changed: [localhost]

TASK [Parse the ls output] ****************************************************************
ok: [localhost] => {
    "msg": [
        {
            "filename": "bin"
        },
        {
            "filename": "boot"
        },
        {
            "filename": "dev"
        },
        {
            "filename": "etc"
        },
        {
            "filename": "home"
        },
        {
            "filename": "lib"
        },
        {
            "filename": "proc"
        },
        {
            "filename": "root"
        },
        {
            "filename": "run"
        },
        {
            "filename": "tmp"
        }
    ]
}

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/docsite/filter_guide_conversions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API