如何使用ansible从节点生成已计数文件的总和
我有一个进程,该进程从“in”文件夹中获取文件,并在进程失败时将其放入“error”文件夹。 我有2个集群,其中有4个节点,这个进程正在运行。 我想对每个节点上的“in”文件夹和“error”文件夹中的文件进行计数,但我也需要按集群进行总数计数 这是我试过的,但不起作用如何使用ansible从节点生成已计数文件的总和,ansible,Ansible,我有一个进程,该进程从“in”文件夹中获取文件,并在进程失败时将其放入“error”文件夹。 我有2个集群,其中有4个节点,这个进程正在运行。 我想对每个节点上的“in”文件夹和“error”文件夹中的文件进行计数,但我也需要按集群进行总数计数 这是我试过的,但不起作用 - name: Count files in Error and in hosts: cluster_data become: true gather_facts: no vars: error_path
- name: Count files in Error and in
hosts: cluster_data
become: true
gather_facts: no
vars:
error_path: "{{ ERROR_PATH }}"
in_path: "{{ IN_PATH }}"
tasks:
- name: initiate total_files_error
set_fact:
total_files_error: 0
- name: "count number of files in {{ error_path }} by node"
files:
paths: "{{ error_path }}"
register: count_files_error
- name: print number of files in {{ error_path }} by node"
debug:
msg: "{{ count_files_error.examined }}"
- name: "count number of files in {{ error_path }} by cluster"
set_fact:
total_files_error: "{{ total_files_error + count_files_error.examined|int }}"
- name: "print number of files in {{ error_path }} by cluster"
debug:
msg: "{{ total_files_error }}"
我想知道每个cluster\u data1
和cluster\u data2
的总文件\u错误计数,但我不太了解set\u事实是如何工作的
这就是我现在拥有的:
任务[启动总文件\u错误]**********************************************
确定:[集群数据11]
确定:[集群数据12]
确定:[集群数据21]
确定:[集群数据22]
任务[计算/data/a2/error中的文件数]*********************************
确定:[集群数据21]
确定:[集群数据12]
确定:[集群数据11]
确定:[集群数据22]
任务[调试]*******************************************************************
确定:[集群_数据12]=>{
“msg”:“504”
}
确定:[集群数据21]=>{
“msg”:“534”
}
确定:[集群_数据11]=>{
“msg”:“1926”
}
确定:[群集数据22]=>{
“msg”:“5025”
}
任务[设置事实]****************************************************************
确定:[集群数据12]
确定:[集群数据21]
确定:[集群数据11]
确定:[集群数据22]
任务[调试]*******************************************************************
确定:[集群_数据11]=>{
“msg”:“1926”
}
确定:[集群_数据12]=>{
“msg”:“504”
}
确定:[集群数据21]=>{
“msg”:“534”
}
确定:[群集数据22]=>{
“msg”:“5025”
}
这就是我所期望的:
任务[启动总文件\u错误]**********************************************
确定:[集群数据11]
确定:[集群数据12]
确定:[集群数据21]
确定:[集群数据22]
任务[计算/data/a2/error中的文件数]*********************************
确定:[集群数据21]
确定:[集群数据12]
确定:[集群数据11]
确定:[集群数据22]
任务[调试]*******************************************************************
确定:[集群_数据12]=>{
“msg”:“504”
}
确定:[集群数据21]=>{
“msg”:“534”
}
确定:[集群_数据11]=>{
“msg”:“1926”
}
确定:[群集数据22]=>{
“msg”:“5025”
}
任务[设置事实]****************************************************************
确定:[集群数据12]
确定:[集群数据21]
确定:[集群数据11]
确定:[集群数据22]
任务[调试]*******************************************************************
确定:[集群_数据1]=>{
“msg”:“2430”
}
确定:[群集数据2]=>{
“msg”:“5559”
}
我想我可以用SETU事实做点什么,但我不知道怎么做。你能帮我吗
有人能帮我吗
提前Thx
问候,,
Winael也许这个例子可以帮助您:
- name: count files
find:
paths: {{ error_path }}
register: file_count
- name: print file_count
debug:
msg: "{{ file_count.examined }}"
您应该阅读以下内容:您的示例太复杂了,应该简化为最简单的formThx,以帮助您使用find模块,但我主要关心的是按clusteri求和,我也希望得到答案,因为我不擅长过滤器和列表处理。解决方案也可能涉及json_查询。。。我迟早会弄明白的,请告诉我你是否成功地将一组主机的hostvars相加!