Как в Ansible сделать поиск на локалхосте, и найденные по маске файлы сложить на удаленный хост?

Добрый день! Поделитесь, если у кого есть, примером плейбука, с помощью которого Ansible может делать поиск по маске файлов (например, *.jpg, *.pdf) на локалхосте, и отправлять их на удаленный сервер.

Буду очень благодарен.
  • Вопрос задан
  • 1692 просмотра
Решения вопроса 2
@Konkase
- local_action: find paths="/tmp/" patterns="*.log" recurse=yes
  register: output
  
- copy: src="{{ item.path }}" dest="{{ item.path }}"
  with_items: "{{ output.files }}"
Ответ написан
Комментировать
mikalaikaia
@mikalaikaia Автор вопроса
Я сделал вот так:

test - это не локальный сервер, а удаленный, но файлы для поиска и копирования на него находятся на локальном.

- hosts: test
  tasks:
    - name: Find the .war file on the localhost
      find: paths="/var/lib/jenkins/workspace/" patterns="*.war" recurse=yes
      register: file_to_copy
      delegate_to: localhost
    - name: Copy the .war file from the local computer to the remote
      copy: src='{{ item.path }}' dest=/tmp/wars/ owner=tomcat group=tomcat mode=755 backup=yes
      with_items:
        - '{{file_to_copy.files}}'


здесь delegate_to: localhost показывает, что искать нужно на локалхосте. localhost - присутствует в inventory.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanes
@Sanes
Готового нет. Но я бы посмотрел на такой вариант. Выбираем файлы и заносим в переменную, затем модулем synchronize отравляем на удаленный хост.
Примерно так я проверяю наличие Apache2 на сервере:
- name: 'Check Apache2'
  command: 'dpkg-query -l apache2'
  register: 'check_apache2'

- name: 'Purge Apache2'
   apt: 'name=apache2 state=absent purge=yes'  
   when: check_apache2.stdout.find('no packages found') == -1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы