csvfile#
Расширение поиска ansible.builtin.csvfile используется для выборки данных из файлов в форматах TSV (tab-separated values; значения, разделенные табуляцией) и CSV (comma-separated values; значения, разделенные запятыми).
Особенности использования#
Расширение поиска ansible.builtin.csvfile имеет следующие особенности:
По умолчанию модуль работает с файлами формата TSV, а не CSV.
Нумерация столбцов начинается с нуля.
Значения возвращаются в виде словаря, где ключ и его значение берутся из первого и второго столбцов файла соответственно.
В позиционных аргументах должно быть указано название хотя бы одного ключа.
В позиционном аргументе можно указать шаблон строки, которой должно соответствовать значение в первом столбце файла. Это позволяет выбрать только нужные строки.
Именованные параметры#
Расширение принимает следующие именованные параметры:
- col#
Номер столбца со значением.
Значение по умолчанию:
1.
- default#
Значение по умолчанию. Возвращается, если в файле CSV значение нужного столбца не заполнено.
- delimiter#
Разделитель значений в файле. Если в качестве разделителя используется табуляция, используйте значение
TABили\t.Значение по умолчанию:
TAB.
- encoding#
Кодировка файла.
Значение по умолчанию:
utf-8.
- file#
Путь к файлу.
Значение по умолчанию:
ansible.csv.
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Во всех примерах используется один и тот же файл source.csv:
source.csv#username,email,department
John Dow,jdow@example.com,IT
Julia Smith,jsmith@example.com,HR
Alice Green,agreen@example.com,Finance
Получение всех записей#
Следующий пример демонстрирует загрузку из файла CSV всех имеющихся записей.
---
# ...
tasks:
- name: Load all rows from CSV
ansible.builtin.set_fact:
users: "{{ lookup('ansible.builtin.csvfile', file='./source.csv', delimiter=',') }}"
- name: Print all loaded rows
ansible.builtin.debug:
msg: "Username: {{ item[0] }} | Email: {{ item[1] }} | Dept: {{ item[2] }}"
loop: "{{ users }}"
Получение адреса электронной почты конкретного пользователя#
Следующий пример демонстрирует поиск адреса электронной почты пользователя Julia Smith.
Здесь значение Julia Smith задано как позиционный параметр.
---
# ...
tasks:
- name: Lookup email by username
ansible.builtin.debug:
msg: "Email for Julia Smith is {{ lookup('ansible.builtin.csvfile', 'Julia Smith', file='./source.csv', delimiter=',', col=1) }}"