Преобразования
Разбор 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