当前位置: 首页 > 知识库问答 >
问题:

如何使用Ansible将多个主机的日志文件复制到一个主机目录,该目录由源主机ip命名?

居京
2023-03-14

我需要分析来自多个主机的nginx日志文件。

首先,我想将它们复制到主机目录。例如,我希望将nginx错误日志文件从6台主机复制到目标主机目录。

[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文件?

共有1个答案

满和安
2023-03-14

我没有高雅的解决办法。这里有些变通办法。要使用源ip命名dest文件,可以使用Ansible定义的ANSIBLE_HOSTNAMEINVIDORY_HOSTNAME变量。在执行之前,请确保已经在ansible controller中创建了/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']"
 类似资料:
  • 当我用- 我可以通过使用- 我可以看到它位于那里和文件是预期的在终端。

  • 我认为构建一个包含本地服务器、目录文件和host_Vars文件夹的ansible角色会很好。因此,通过在ansible从工作目录上安装该角色,并将清单名称作为参数传递,我可以在ansible文件夹中复制与该名称相关的文件,并在下一步中将其用作清单文件和变量,以便部署到远程服务器上。 首先,有没有人有更好的主意来制作一个动态的库存文件?使用本地git服务器和存储库还是shell命令? 主要问题:如何

  • 挂载主机目录 挂载一个主机目录作为数据卷 使用 --mount 标记可以指定挂载一个本地主机的目录到容器中去。 $ docker run -d -P \ --name web \ # -v /src/webapp:/opt/webapp \ --mount type=bind,source=/src/webapp,target=/opt/webapp \ training/

  • /inventory/group_vars/directory有 我希望host_1引用/inventory/group_vars/host_1.yml中的变量

  • 我一直试图使用Ansible Playbook将主机名添加到我的主机文件中。我的Ansible播放如下所示,我的主机文件位于: Playbook成功执行,但新主机名没有添加到Ansible hosts文件中。有人能帮我吗?

  • 我想建立一个Docker图像,包括我的自定义Powershell模块。因此,我使用Microsofts图像,我想从这里创建我自己的图像,其中包括我的psm1文件。 我想把C:\temp\someDirectory中包含的文件复制到docker linux容器中。在构建映像时,我得到以下错误: C:\temp\docker_posh>docker build--rm-f dockerfile-t d