需求:需要拉去线上所有日志到本地
/opt/ar/server_group/目录下一级,是程序模块名字,程序模块名字下面是有log,log_data目录,是需要拉去的日志目录
某台主机的目录格式
实现思路:
1.shell匹配所需要的日志目录
ls /opt/ar/server_group/*/log* -d
2.将这些目录注入ansible变量,成为一个list
3.使用synchronize模块,循环这些list,拉去到本机,以主机名区分。
相关ansible-playbook实现脚本:
get_log.yml
- hosts: ar
remote_user: centos
become: yes
become_user: root
become_method: sudo
gather_facts: no
tasks:
- name: retrieve the list of home directories
shell: ls /opt/ar/server_group/*/log* -d
register: home_dirs
#- debug: var=home_dirs.stdout_lines
- name: pull log
#shell: echo "{{ item }}"
synchronize: src={{ item }} dest=/opt/logs/{{inventory_hostname}}/ rsync_opts="-Rarzpv" mode=pull
with_items: "{{home_dirs.stdout_lines}}"