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]<mailto:[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]<mailto:[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>.
---------------
[https://www.zen.co.uk/resources/images/default-source/image-library/icons/zen-logo_meeting.png]
Stuart Lowe He/Him
Zen Cloud Engineering - Team Leader
Zen Internet
www.zen.co.uk
<https://www.zen.co.uk/>
Proud to be a certified B Corporation
[https://www.zen.co.uk/resources/images/default-source/image-library/which232221-stacked-emailsig.webp]
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/PA4PR01MB899486B744D2DADC887830CBA8172%40PA4PR01MB8994.eurprd01.prod.exchangelabs.com.