Ответ 1
Похоже, вам нужен доступ к задаче, которая ищет информацию локально, а затем использует эту информацию в качестве ввода в модуль копирования.
Существует два способа получить локальную информацию.
-
используйте
local_action:
. Это сокращение для запуска задачи снова 127.0.0.1, более подробная информация найдена здесь. (это то, что вы использовали) -
используйте
lookup
. Это плагиновая система, специально разработанная для получения информации локально. Подробнее здесь.
В вашем случае я бы пошел на второй метод, используя lookup
. Вы можете настроить его следующим образом :
vars:
local_file_name: "{{ lookup('pipe', 'ls -1 files/*.txt') }}"
tasks:
- name: copy file
copy: src="{{ local_file_name }}" dest=/path/to/fixedname.txt
Или, более прямо:
tasks:
- name: copy file
copy: src="{{ lookup('pipe', 'ls -1 files/*.txt') }}" dest=/path/to/fixedname.txt
Что касается путей
плагин lookup запускается из контекста задачи (playbook vs role). Это означает, что он будет вести себя по-разному в зависимости от того, где он использовался.
В приведенной выше настройке задачи запускаются непосредственно из учебника, поэтому рабочий каталог будет выглядеть следующим образом:
/path/to/project
- это папка, в которой находится ваша тетрадь.
Если вы хотите добавить задачу в роль, то рабочий каталог будет выглядеть следующим образом:
/path/to/project/roles/role_name/tasks
Кроме того, плагины file
и pipe
запускаются из папки role/files , если она существует:
/path/to/project/roles/role_name/files
- это означает, что ваша команда ls -1 *.txt
предостережение:
Плагин вызывается каждый раз, когда вы обращаетесь к переменной. Это означает, что вы не можете доверять отладке переменной в своей книге, а затем полагаться на переменную, чтобы иметь такое же значение при использовании позже в роли!
Я действительно удивляюсь, что в прецеденте для файла, который находится внутри проектов, есть папки, но имя неизвестно заранее. Откуда появился такой файл? Нельзя ли добавить слой между созданием файла и его использованием в Ansible... или с фиксированным локальным путем в качестве переменной? Просто любопытно;)