Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ansible比较文件_Ansible_Ansible Playbook - Fatal编程技术网

使用Ansible比较文件

使用Ansible比较文件,ansible,ansible-playbook,Ansible,Ansible Playbook,我需要找到一种方法来比较给定elasticsearch数据主机组中的elasticsearch模板文件夹。这意味着,如果目录是/usr/local/elasticsearch/config/templates/,我需要确保ansible主机组中该目录中的所有文件都相同 没有额外的模板文件或不同版本的模板文件。我还不知道怎么做 我首先比较模板文件夹下给定组中所有主机中的文件数,然后获取文件列表及其各自的md5sum值,并使用include_vars将它们导出到当前playbook。然后,我将每个文

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


没有额外的模板文件或不同版本的模板文件。我还不知道怎么做

我首先比较模板文件夹下给定组中所有主机中的文件数,然后获取文件列表及其各自的md5sum值,并使用include_vars将它们导出到当前playbook。然后,我将每个文件md5sum与使用include_vars和_items导出的文件进行了比较。

尝试使用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目录与主机1进行比较
  • 使用
    -l
    限制参数排除host1.example.com:
    -l'~主机1'
  • 使用
    -f 1
    一次只运行一个比较。可选,但对我的情况有帮助,因为目录包含大量文件(>10K)
  • 使用
    --dry run
    防止rsync实际同步目录
  • 使用
    --delete
    列出目标目录中的无关文件
  • 使用
    --checksum
    根据校验和而不是mod time和size来比较文件
注释

  • 您可以通过删除
    --dry run
    来修改这一行以执行同步。考虑在传输过程中添加<代码> -Z >代码>压缩文件数据,以及<代码> ->代码>存档模式。
  • 生产库存文件如下所示:

    [data_hosts]
    host1.example.com
    host2.example.com
    host3.example.com
    host4.example.com
    
您看过模块了吗?