По сути, я хочу иметь возможность обрабатывать «подстановочные имена файлов» в Linux с помощью ansible. По сути, это означает использование команды ls с частью имени файла, за которой следует «*», чтобы он отображал ТОЛЬКО определенные файлы.Как сохранить вывод команды в массив в Ansible?
Однако я не могу правильно сохранить вывод в переменной, поскольку, вероятно, будет возвращено более одного имени файла. Таким образом, я хочу иметь возможность хранить эти результаты независимо от того, сколько их может быть в массиве во время одной задачи. Затем я хочу получить все результаты из массива в более поздней задаче. Кроме того, поскольку я не знаю, сколько файлов может быть возвращено, я не могу выполнить задачу для каждого имени файла, и массив имеет больше смысла.
Причина этого в том, что файлы в случайном хранилище часто меняются, но они всегда имеют одинаковую первую половину. Это их вторая половина их имен, которые являются случайными, и я не хочу иметь жесткий код, который может быть вообще недоступен.
Я не уверен, как правильно реализовать/манипулировать массивом в незаменимом, поэтому следующий код является примером того, что я пытаюсь выполнить. Очевидно, что он не будет функционировать должным образом, если более чем один имя_файла возвращается, поэтому я прошу помощи по этой теме:
- hosts: <randomservername>
remote_user: remoteguy
become: yes
become_method: sudo
vars:
aaaa: b
tasks:
- name: Copy over all random file contents from directory on control node to target clients. This is to show how to manipulate wildcard filenames.
copy:
src: /opt/home/remoteguy/copyable-files/testdir/
dest: /tmp/
owner: remoteguy
mode: u=rwx,g=r,o=r
ignore_errors: yes
- name: Determine the current filenames and store in variable for later use, obviously for this exercise we know part of the filenames.
shell: "ls {{item}}"
changed_when: false
register: annoying
with_items: [/tmp/this-name-is-annoying*, /tmp/this-name-is-also*]
- name: Run command to cat each file and then capture that output.
shell: cat {{ annoying }}
register: annoying_words
- debug: msg=Here is the output of the two files. {{annoying_words.stdout_lines }}
- name: Now, remove the wildcard files from each server to clean up.
file:
path: '{{ item }}'
state: absent
with_items:
- "{{ annoying.stdout }}"
Я понимаю, формат YAML получил немного спутаны, но если это неподвижная , этот «будет» работать нормально, он просто не даст мне результат, который я ищу. Таким образом, если бы было 50 файлов, я бы хотел, чтобы они могли манипулировать ими всеми и/или удалять их все .. и т. Д. И т. Д.
Если кто-нибудь здесь может сообщить мне, как правильно использовать массив в вышеупомянутом фрагменте тестового кода, который был бы фантастическим!
Похоже, что ваш вопрос может быть сокращен до пяти строк максимум. Я бы предложил использовать минимальные примеры, которые объясняют проблему и относятся к большему, чем ваш конкретный случай. – techraf
techraf: Я знаю, что могу немного поучиться, но в этом случае я понял, что больше информации было лучше, чем меньше. В будущем я попытаюсь посмотреть, могу ли я немного сократить этот тип текста. – Viscosity