关键词:
我正在尝试找到一种方法,可以将一个目录中的多个文件与另一个目录中的文件进行比较。例如-目录/ home / ansible / properties /中有10个文件,而远程主机(如/ opt / apps / properties /)中的另一个目录中有类似的文件集。我想比较每个可能使用校验和的方法,即使其中一个文件被更改,也要执行一些任务-
在我的剧本下面,可以比较一个文件,但是有没有办法比较所有文件或与此相关的目录?
- name: Get checksum of my First file
stat:
path : "/home/ansible/properties/my.properties"
register: myfirstfile
- name: Current SHA1
set_fact:
1stFilechecksum: " myfirstfile.stat.checksum "
- name: Get checksum of my Second File
stat:
path : "/opt/aaps/properties/my.properties"
register: mysecondfile
- name: Current SHA1
set_fact:
2ndFilechecksum: " mysecondfile.stat.checksum "
- name: Comparing 2 files
debug:
msg: "Do Something....."
when: 1stFilechecksum != 2ndFilechecksum
根据您的描述测试文件树
...或至少我从中了解。
/tmp/test/a /tmp/test/b
├── file10.txt ├── file10.txt
├── file1.txt ├── file1.txt
├── file2.txt ├── file2.txt
├── file3.txt ├── file3.txt
├── file4.txt ├── file4.txt
├── file5.txt ├── file5.txt
├── file6.txt ├── file6.txt
├── file7.txt ├── file7.txt
├── file8.txt ├── file8.txt
├── file9.txt ├── file9.txt
└── toto.txt └── titi.txt
您可以看到,除了每个目录中的文件以外,所有文件都是公用的。这些将被排除在比较之外。对于通用文件,除了file2.txt
和file5.txt
具有相同的内容之外,所有其他文件都是不同的。
用于解决方案的基础
- 我们以
find
循环搜索两个目录中的所有文件。find
中的所有文件都在a
中,results[0]
中的b
中的文件都在。results[1]
选项收集我们所需的信息。 - 在下一个任务中:
- 我们循环搜索
get_checksum
中找到的文件。 - [在每次迭代中,我们通过替换[dir]路径后仅用
a
选择具有相同b
名称的列表元素来计算selectattr
中的相应文件。保留结果的第一个元素将得到我们的文件。如果结果为空(不是通用文件),则默认为空对象 - when子句检查文件是否存在(常见的是我们跳过)并且它们是否不同(校验和不相等)
selectattr
用于自定义循环变量名称以提高可读性(即item => file1),并将循环项的输出限制为易于理解的形式。
- 我们循环搜索
剧本
path
结果
loop_control
ansible(代码片段)
Ansible:Ansible的核心程序HostLnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统... 查看详情
多个主机在ansible中更新相同的localhost变量(代码片段)
如果在我的playbook中,正在多个主机上运行一个游戏,每个主机更新一个localhost变量,localhost变量的值是什么?-hosts:groupaserial:2tasks:-set_fact:deploy:ARandomInteger(differentfordifferentserver)when:prev_failure.stat.existsdelegate_to:localh 查看详情
ansible(代码片段)
Ansible:Ansible的核心程序HostLnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载Playbooks:YAML格式文件,多个任务定义在一个文件中,使用... 查看详情
ansible详解(代码片段)
ansible:Ansible的核心程序HostLnventory:记录每一个管理主机的信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载。Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,&l... 查看详情
ansible如何只输出错误信息?(代码片段)
...输出需要关注的部分。但是callback插件只对playbook生效,如何对Ad-hoc起作用呢?参考文档:https://docs.ansible.com/ansible/2.6/plugins/callback.html#managing-adhoc可以通过修改配置文件[defaults]bin_ansible_callbacks=True或者修改环境变量来实现exportANSI... 查看详情
ansible学习(代码片段)
ansible与salt对比相同都是为了同时在多台机器上执行相同的命令都是python开发不同agent(saltstack需要安装、ansible不需要)配置(salt配置麻烦,ansible基本不用配置)学习路线(salt比较陡峭,ansible比较平缓)第三方工具(salt比较... 查看详情
在ansible中如何从另一个变量初始化变量?(代码片段)
在Ansible角色中,如何根据另一个变量定义变量?我正在设计一个角色,并希望它的界面能够理解像framework_enable_java=yes或framework_enable_java=mysqltomcat这样的剧本变量,并希望编写一个定义布尔值的vars/main.yml文件framework_enable_java_coref... 查看详情
自动化运维之ansible基础元素介绍(代码片段)
Inventory(主机清单)Ansible为了更加便捷的管理主机,在主机清单中将被管理主机进行分组命名,默认的主机清单为/etc/ansible/hosts文件。主机清单可以设置为多个,也可以通过DynamicInventory动态生成。Inventory文件以中括号中的字符标... 查看详情
使用 Ansible 复制多个文件
...ileswithAnsible【发布时间】:2016-08-1008:47:43【问题描述】:如何在任务中通过Ansible将多个文件复制到远程节点?我试图在我的任务中复制复制模块行来定义文件,但它只复制第一个文件。【问题讨论】:【参考方案1】:您可以为... 查看详情
ansible:如何从清单组附加变量(代码片段)
我有一个ansible清单,组别如下。+hosts/+all/+group_vars/-linux.yml-webserver.yml-dbserver.yml...我有一个游戏本,用来设置对主机的监控,而监控的种类是由插件完成的。所以在每个组y中设置一个列表monitoring_plugins的插件,以便能够监控每个... 查看详情
如何在ocaml中编译多个文件?(代码片段)
我目前正在教自己ocaml我的编程语言课程,我在ocaml编译多个文件时遇到问题。我在get_file_buffer.ml文件中定义了一个函数get_file_buffer.ml的源代码(*Creatingafunctionthatwillreadallthecharsinafilepassedinfromthecommandargument.Andstoretheresultsinacharli 查看详情
如何应用此 pandas.Series 代码来比较文件夹中的多个文件
】如何应用此pandas.Series代码来比较文件夹中的多个文件【英文标题】:Howtoapplythispandas.Seriescodetocompareseveralfileswithinafolder【发布时间】:2018-01-2300:06:57【问题描述】:我已经有了这段代码,它可以在一个文件夹中找到所有csv文件... 查看详情
如何使用comparableinterface比较arraylist中对象的多个属性?[重复](代码片段)
...r(Point)。我可以在评估一个属性时对列表进行排序。我如何设置我的compareTo方法,以便它首先 查看详情
如何在文件目录中群集多个csv文件(代码片段)
我有多个具有相同数据结构的csv文件我想一次群集每个csv文件importosimportpandasaspdimportnumpyasnpfromsklearnimportmetricsimportglobdf=pd.read_csv('File000rejoice-19.csv')can=df.drop(columns=['pat'])fromsklearn.clusterimportDBSC 查看详情
ansible(代码片段)
一、安装ansibleyuminstallansible-yansible--version//查看版本,没有报错即安装成功二、ansible主机定义与分组1.ansible配置文件查找顺序(意思是以前边配置文件为准,前边有后边就不生效了)首先检测ANSIBLE_CONFIG变量定义的配置文件其次检... 查看详情
如何使用ansible过滤树中每个文件的最新版本?(代码片段)
我有一个带有各种文件的中型目录树:/some/place/distfiles/foo-1.2.jar/some/place/distfiles/subdir/foo-1.3.jar/some/place/distfiles/bar-1.1.jar/some/place/distfiles/bar-1.1.2.jar我使用find-module获取完整列表,但对于每个foo和bar,我只需要late 查看详情
如何使用 ansible 在一个循环中挂载多个磁盘
】如何使用ansible在一个循环中挂载多个磁盘【英文标题】:Howtomountmultipledisksinaloopusingansible【发布时间】:2020-11-1521:09:06【问题描述】:我最近才开始使用Ansible。我正在尝试在使用terraform附加的azureVM上安装4个磁盘。每个磁盘... 查看详情
如何在多个zip文件中添加文件?(代码片段)
...中的每个zip文件夹中移动图片。我在网上搜索了一些关于如何使用批处理(.bat)进行操作的指导,我发现的唯一解决方案是创建它的宏,但它需要很长时间才能完成。编辑:我有50个zip文件夹,我想以更快的方式在每个文件夹中... 查看详情