首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用ansible将日志文件从多个主机复制到一个主机目录,以源主机ip命名的文件?

如何使用ansible将日志文件从多个主机复制到一个主机目录,以源主机ip命名的文件?
EN

Stack Overflow用户
提问于 2019-07-31 17:18:49
回答 1查看 68关注 0票数 0

我需要分析来自多个主机的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编写攻略?

代码语言:javascript
运行
复制
[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文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-31 18:59:16

我没有一个优雅的解决方案。这里有一些解决方法。要使用源ip命名dest文件,可以使用ansible定义的ansible_hostnameinventory_hostname变量。在执行之前,确保你已经在ansible控制器中创建了/tmp/nginx_logs/目录。

代码语言:javascript
运行
复制
---
- 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']"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57287347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档