Well, the set_fact is supposed to only register or select anything where the size parameter of the files attributes is 0. The ones that are printing just [] don't fit that criteria, and therefore, shouldn't be included in the debug output. Yet they are, so that's what I'm trying to fix/clean up first.
Thanks, Harry On Wednesday, April 24, 2024 at 3:51:55 PM UTC-4 [email protected] wrote: > 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/92d08bef-67eb-46d5-a2c1-6bcb75d2e262n%40googlegroups.com.
