gpt4 book ai didi

ansible - 使用 Ansible 比较文件

转载 作者:行者123 更新时间:2023-12-04 18:06:06 24 4
gpt4 key购买 nike

我需要找到一种方法来比较给定 elasticsearch 数据主机组中的 elasticsearch 模板文件夹。这意味着如果目录是 /usr/local/elasticsearch/config/templates/,我需要确保该 ansible 主机组中该目录内的所有文件都相同。

没有额外的模板文件或差异版本模板文件。我一直无法弄清楚如何做到这一点。

最佳答案

尝试使用 shell 模块将 ansible 与 rsync 试运行结合起来:

ansible -i production data_hosts -l '!~host1' -f 1 -m shell \
-a 'rsync --checksum --delete --dry-run -r -v host1.example.com:/usr/local/elasticsearch/config/templates/ /usr/local/elasticsearch/config/templates'

解释

  • 将 [data_hosts] 组中所有主机上的/usr/local/elasticsearch/config/templates 目录与 host1 进行比较
  • 使用 -l 限制参数排除 host1.example.com:-l '!~host1'
  • 使用 -f 1 一次只运行一个比较。可选,但对我的情况有帮助,因为目录包含大量文件(>10K)
  • 使用 --dry-run 来防止 rsync 实际同步目录
  • 使用--delete 列出目标目录中的无关文件
  • 使用--checksum 根据校验和而不是修改时间和大小来比较文件

注意事项

  • 您可以通过删除 --dry-run 修改此单行以执行同步。考虑添加 -z 以在传输期间压缩文件数据,并添加 -a 以用于存档模式。
  • 生产库存文件如下所示:

    [data_hosts]
    host1.example.com
    host2.example.com
    host3.example.com
    host4.example.com

关于ansible - 使用 Ansible 比较文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26339245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com