Как сделать сумму подсчитанных файлов из узла с ansible - PullRequest
2 голосов
/ 24 июня 2019

У меня есть процесс, который берет файл из папки «in» и помещает их в папку «error» при сбое процесса.У меня есть 2 кластера из 4 узлов, где этот процесс выполняется.Я хочу подсчитывать файлы как в папке «in», так и в папке «error» на каждом узле, но мне нужно подсчитать общее количество по кластеру

Это то, что я пробовал, но оно не работает

- 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 }}"

Я хотел бы иметь счетчик total_files_error для каждого cluster_data1 и cluster_data2, но я не думаю, что хорошо понимаю, как работает set_fact

Это то, что у меня сейчас:

TASK [initiate total_files_error] **********************************************
ok: [cluster_data11]
ok: [cluster_data12]
ok: [cluster_data21]
ok: [cluster_data22]

TASK [count number of files in /data/a2/error] *********************************
ok: [cluster_data21]
ok: [cluster_data12]
ok: [cluster_data11]
ok: [cluster_data22]

TASK [debug] *******************************************************************
ok: [cluster_data12] => {
    "msg": "504"
}
ok: [cluster_data21] => {
    "msg": "534"
}
ok: [cluster_data11] => {
    "msg": "1926"
}
ok: [cluster_data22] => {
    "msg": "5025"
}

TASK [set_fact] ****************************************************************
ok: [cluster_data12]
ok: [cluster_data21]
ok: [cluster_data11]
ok: [cluster_data22]

TASK [debug] *******************************************************************
ok: [cluster_data11] => {
    "msg": "1926"
}
ok: [cluster_data12] => {
    "msg": "504"
}
ok: [cluster_data21] => {
    "msg": "534"
}
ok: [cluster_data22] => {
    "msg": "5025"
}

Это то, что я ожидал:

TASK [initiate total_files_error] **********************************************
ok: [cluster_data11]
ok: [cluster_data12]
ok: [cluster_data21]
ok: [cluster_data22]

TASK [count number of files in /data/a2/error] *********************************
ok: [cluster_data21]
ok: [cluster_data12]
ok: [cluster_data11]
ok: [cluster_data22]

TASK [debug] *******************************************************************
ok: [cluster_data12] => {
    "msg": "504"
}
ok: [cluster_data21] => {
    "msg": "534"
}
ok: [cluster_data11] => {
    "msg": "1926"
}
ok: [cluster_data22] => {
    "msg": "5025"
}

TASK [set_fact] ****************************************************************
ok: [cluster_data12]
ok: [cluster_data21]
ok: [cluster_data11]
ok: [cluster_data22]

TASK [debug] *******************************************************************
ok: [cluster_data1] => {
    "msg": "2430"
}
ok: [cluster_data2] => {
    "msg": "5559"
}

Полагаю, я могу что-то сделать с set_fact, но я не понимаю, как.Можете ли вы помочь мне в этом?

Есть ли кто-нибудь, кто может помочь мне, пожалуйста?

Спасибо заранее

С уважением, Винаэль

1 Ответ

1 голос
/ 24 июня 2019

может быть, этот пример поможет вам:

- name: count files
  find: 
    paths: {{ error_path }}
  register: file_count

- name: print file_count
  debug:
    msg: "{{ file_count.examined }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...