energy_value: "{{ (csv_content.stdout_lines | select('search', '^' + energy_label) | first | split(','))[1] | default('NA') }}" voltage_value: "{{ (csv_content.stdout_lines | select('search', '^' + voltage_label) | first | split(','))[1] | default('NA') }}" time_value: "{{ (csv_content.stdout_lines | select('search', '^' + time_label) | first | split(','))[1] | default('NA') }}" - name: Append values to output file local_action: shell echo "{{ inventory_hostname }},{{ energy_value }},{{ voltage_value }},{{ time_value[:5] }},OK" >> "{{ output_file }}" delegate_to: localhost rescue: - name: Use last known values when read fails ansible.builtin.shell: | prev=$(grep "^{{ inventory_hostname }}," {{ previous_csv }} 2>/dev/null | tail -1) if [ -n "$prev" ]; then energy=$(echo "$prev" | cut -d',' -f2) voltage=$(echo "$prev" | cut -d',' -f3) timestamp=$(echo "$prev" | cut -d',' -f4) echo "{{ inventory_hostname }},$energy,$voltage,$timestamp,OFF" >> "{{ output_file }}" else echo "{{ inventory_hostname }},NA,NA,NA,OFF" >> "{{ output_file }}" fi delegate_to: localhost - name: Write last known values for unreachable host ansible.builtin.shell: | prev=$(grep "^{{ inventory_hostname }}," {{ previous_csv }} 2>/dev/null | tail -1) if [ -n "$prev" ]; then energy=$(echo "$prev" | cut -d',' -f2) voltage=$(echo "$prev" | cut -d',' -f3) timestamp=$(echo "$prev" | cut -d',' -f4) echo "{{ inventory_hostname }},$energy,$voltage,$timestamp,OFF" >> "{{ output_file }}" else echo "{{ inventory_hostname }},NA,NA,NA,OFF" >> "{{ output_file }}" fi delegate_to: localhost when: ansible_host_unreachable is defined and ansible_host_unreachable - name: Copy result file to Apache html folder hosts: localhost tasks: - name: Copy CSV file to /var/www/html/ copy: src: Summary.csv dest: /var/www/html/Summary.csv owner: www-data group: www-data mode: '0644'