I used the stat module as suggested by Todd and it worked perfectly.  I 
appreciate the suggestion and for setting me straight.

Thanks,
Harry

On Thursday, April 25, 2024 at 4:09:28 AM UTC-4 Stuart Lowe wrote:

> Something like this should work?
>
> ---
>
> - 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: Check if /var/log/messages is zero length
>
>     ansible.builtin.stat:
>
>       path: "{{ item.path }}"
>
>     register: file_details
>
>     with_items: "{{ messages_files.files }}"
>
>     when: messages_files.matched > 0
>
>  
>
>   - name: Restart rsyslog service if /var/log/messages is zero length
>
>     ansible.builtin.systemd:
>
>       name: rsyslog
>
>       state: restarted
>
>     when: item.stat.exists and item.stat.size == 0
>
>     with_items: "{{ file_details.results }}"
>
>  
>
> *From:* [email protected] <[email protected]> *On 
> Behalf Of *[email protected]
> *Sent:* Wednesday, April 24, 2024 8:27 PM
> *To:* Ansible Project <[email protected]>
> *Subject:* [ansible-project] Getting hostnames from a fact
>
>  
>
> You don't often get email from [email protected]. Learn why this is 
> important <https://aka.ms/LearnAboutSenderIdentification>
>
>  
>
> *Caution:* This email originated from outside of the organisation. Do not 
> click links or open attachments unless you recognise the sender and know 
> the content is safe 
>
>  
>
> 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>
> .
>
> ---------------
>
> *Stuart Lowe* He/Him
> Zen Cloud Engineering - Team Leader
> *Zen Internet*
> www.zen.co.uk 
>
> Proud to be a certified B Corporation
>
> This message is private and confidential. If you have received this 
> message in error, please notify us and remove it from your system.
>
> Zen Internet Limited may monitor email traffic data to manage billing, to 
> handle customer enquiries, and for the prevention and detection of fraud. 
> We may also monitor the content of emails sent to and/or from Zen Internet 
> Limited for the purposes of security, staff training and to monitor the 
> quality of service.
> Zen Internet Limited is registered in England and Wales, Sandbrook Park, 
> Sandbrook Way, Rochdale, OL11 1RY Company No. 03101568 VAT Reg No. 686 0495 
> 01 
>

-- 
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/51004e56-4d09-43e3-bea4-70db21cb4f4cn%40googlegroups.com.

Reply via email to