我需要分析来自多个主机的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文件?
发布于 2019-07-31 18:59:16
我没有一个优雅的解决方案。这里有一些解决方法。要使用源ip命名dest文件,可以使用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']"
https://stackoverflow.com/questions/57287347
复制相似问题