1) How can I NOT print what server2 is printing/showing?

I'd say add a when clause to the task, like:

  - name: Print results
    ansible.builtin.debug:
      msg: "{{ zero }}"
    when: "some condition here"

so the print only happens when the condition is met. The condition might be some value from the message_files variable
Or maybe something like:

   when: meages_files.ssfiles | selectattr('size', '==', 0)

not sure about that though because I don't understand really what meages_files.ssfiles | selectattr('size', '==', 0) does



On 4/24/24 9:26 PM, [email protected] wrote:
I have a playbook I'm developing where I'm trying to find any server that has a 0 length /var/log/messages files.  When I find those, I want to restart the rsyslog service on those.  So right now I'm setting this fact as follows:

---
- hosts: my_hosts
  become: true
  become_method: sudo
  gather_facts: false

  tasks:

  - name: Determine if /var/log/messages is zero-length
    ansible.builtin.find:
      paths: /var/log
      patterns: messages
    register: messages_files

  - name: Set fact for all servers that have zero-length /var/log/messages
    ansible.builtin.set_fact:
      zero: "{{ messages_files.files | selectattr('size', '==', 0) }}"

  - name: Print results
    ansible.builtin.debug:
      msg: "{{ zero }}"

When the debug print happens, I get all servers printing out either the file attributes, or an empty string:

ok: [server1] => {
    "msg": [
        {
            "atime": 1713683723.242925,
            "ctime": 1713683723.242925,
            "dev": 64777,
            "gid": 10,
            "gr_name": "wheel",
            "inode": 8212,
            "isblk": false,
            "ischr": false,
            "isdir": false,
            "isfifo": false,
            "isgid": false,
            "islnk": false,
            "isreg": true,
            "issock": false,
            "isuid": false,
            "mode": "0640",
            "mtime": 1713683723.242925,
            "nlink": 1,
            "path": "/var/log/messages",
            "pw_name": "root",
            "rgrp": true,
            "roth": false,
            "rusr": true,
            "size": 0,
            "uid": 0,
            "wgrp": false,
            "woth": false,
            "wusr": true,
            "xgrp": false,
            "xoth": false,
            "xusr": false
        }
    ]
}
ok: [server2] => {
    "msg": []
}

So, 2 questions:
1) How can I NOT print what server2 is printing/showing?
2) Once I fix #1, how can I get just the hostnames of those servers where the size of the file is 0, then start another play to restart rsyslog on only those?

Thanks,
Harry
--
You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/5617fb1f-3aa7-45a3-ba84-656b7b786c86n%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/5617fb1f-3aa7-45a3-ba84-656b7b786c86n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "Ansible 
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/4a2f58ef-70b8-4784-9725-14b37e8875a1%40mailbox.org.

Reply via email to