🍎

Ansibleでリモート先からローカルにファイルを取得する

2021/06/21に公開

リモート先でファイルを検索して、ローカルにコピーするためのプレイブックです。(Roleのみ)
簡単かと思ったら割と作るのに困ったので、残しておきます。

まずファイルを検索しにいって

- name: find files.
  find:
    paths: "{{ item }}"
    recurse: no
    patterns: "*.log" #正規表現で検索条件をかく
  register: files_to_copy
  with_items:
    - /tmp/ #任意のパスにする
    - /var/log/ 

検索に引っかかったファイルをローカルからリモートへコピーする

- name: fetch file.
 fetch:
   src: "{{ item.path }}"
   dest: "{{ playbook_dir }}/files/{{ inventory_hostname }}/{{ item.path }}" #ローカルのファイルを持ってきたいパスを記載する
   flat: yes
 with_items: "{{ files_to_copy.results | map(attribute='files') | list }}"

fetchとwith_fileglobを組み合わせればまとめてかけるんじゃないかと思いましたが、
withモジュール系はリモート先でしか使えないためできませんでした。。。

何か別でいい方法があれば教えて欲しいです。

Discussion