その名の通り、ターゲットとなるサーバ上のファイルをとってくるRole "fetch-files" を作ってみました。
通常少なからずAnsibleのコードを書かなければなりませんが、取得に必要なファイルが決まってさえいれば直ぐに使えるようにしています。
fetch-files Role
Ansible Galaxy に上げています。
https://galaxy.ansible.com/tksarah/fetch-files/
Linux/Unix , Windows に対応
準備
- Ansible 2.X 以上の入ったホスト(v2.1.2でテスト済み)
- とってきたいファイルのリスト
sample_filelist.txt
/etc/ssh/sshd_config
/var/log/syslog
/etc/nsswitch.conf
使い方例
対象となるサーバのインベントリファイルを用意します。
hosts
[hoge]
192.168.0.1
[fuga]
192.168.0.2
Ansible Galaxy からロールをダウンロードします。
# ansible-galaxy install --roles-path ./roles tksarah.fetch-files
プレイブックを用意します。(以下そのまま使っていただくと便利です。)
site.yml
- name: Playbook for fetching files
hosts: "{{ target }}"
gather_facts: no
vars_prompt:
- { name: "target" , prompt: "Input target host" , default: all , private: no }
- { name: "inputfile" , prompt: "Input your file list" , default: sample_filelist.txt , private: no }
- { name: "savedir" , prompt: "Input a save directory" , default: fetched , private: no }
roles:
- tksarah.fetch-files
実行します。
# ansible-playbook -i hosts site.yml
Input target host [all]:(ターゲットホストを指定します。デフォルトはall)
Input your file list [sample_filelist.txt]:(取得したいファイルが書かれているファイルを指定します。)
Input a save directory [fetched]:(取得したファイルを保存するディレクトリを指定します。デフォルトはカレントのfetched)
PLAY [Playbook for fetching files] *********************************************
:
:
:
:
PLAY RECAP *********************************************************************
192.168.0.1 : ok=19 changed=6 unreachable=0 failed=0
192.168.0.2 : ok=17 changed=6 unreachable=0 failed=0
上記サンプルのプレイブックを使った時、とってきたファイルはカレントの「fetched」ディレクトリに格納されます。
# tree fetched
fetched
|-- 192.168.0.1
| |-- etc
| | |-- nsswitch.conf
| | `-- ssh
| | `-- sshd_config
| `-- var
| `-- log
| `-- syslog
|-- 192.168.0.2
| |-- etc
以下も合わせて使うと効果的です。
シンプルにコマンド出力をとってくるAnsible Role(Unix/Linux版)
シンプルにコマンド出力をとってくるAnsible Role(Windows版)