我需要分析来自多个主机的Nginx日志文件。
首先,我想将它们复制到主机目录。 例如,我想将nginx错误日志文件从6台主机复制到目标主机目录。
6个主机ips为192.168.0.2-192.168.0.7。 Nginx错误日志路径为/var/log/nginx/nginx_error.log。我想将它们复制到目标主机192.168.0.10中的/ var / log / nginx_error目录。每个文件都由源主机ip命名。如何使用Ansible编写剧本?
[serverB]
192.168.0.10
[serverA]
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
- hosts: serverB
tasks:
- name: Copy Remote-To-Remote (from serverA to serverB)
synchronize: src=/var/log/nginx/nginx_error.log dest=/var/log/nginx_error/
delegate_to: serverA
问题是我不知道如何使用源IP地址命名dest文件?
答案 0 :(得分:1)
我没有一个优雅的解决方案。一些解决方法。要使用源ip命名目标文件,可以使用ansible定义的ansible_hostname
或inventory_hostname
变量。
执行之前,请确保已在ansible控制器中创建了/tmp/nginx_logs/
目录。
---
- name : Copy Remote
hosts: serverA, serverB
tasks:
- name: Copy the files from the Source Machine(serverA) to Ansible Controller
synchronize:
mode: pull
src: /var/log/nginx/nginx_error.log
dest: "/tmp/nginx_logs/test_{{ ansible_hostname }}.txt"
when: "inventory_hostname in groups['serverA']"
- name: Copy log files to the destination server
copy:
src: /tmp/nginx_logs/
dest: /var/log/nginx_error/
when: "inventory_hostname in groups['serverB']"