See below for inline answers:
On Thursday, August 31, 2023 at 1:47:47 PM UTC-6 Will McDonald wrote:
OK, that's some useful extra info. I've just had a very quick basic play (I
haven't touched cron in earnest for a long time).
Have you tried echo-ing $z4 and appended to a tmp file to see if there's
anything in it at run time?
Yes, I have, and $z4 is indeed quite empty.
I've tried a few variations in a standard user's crontab:
root@DESKTOP-9HGJE25:~# crontab -u wmcdonald -l | grep -v ^#
* * * * * ansible -m setup localhost
* * * * * ~/ansible-test
root@DESKTOP-9HGJE25:~# cat /home/wmcdonald/ansible-test
#!/bin/sh
ansible -m setup localhost
BASIC_VAR=`ansible -m setup localhost`
echo $BASIC_VAR
VERBOSE_VAR=`ansible -vvv -m ping localhost`
echo $VERBOSE_VAR
FILE_OUTPUT=`ansible -m ping localhost`
echo $FILE_OUTPUT >> /tmp/ansible.out
The output from the last set of steps shows:
root@DESKTOP-9HGJE25:~# cat /tmp/ansible.out
localhost | SUCCESS => { "changed": false, "ping": "pong" }
localhost | SUCCESS => { "changed": false, "ping": "pong" }
I did notice from syslog that without an MTA, cron (on Ubuntu, at least) is
throwing away output:
/var/log/syslog:Aug 31 20:09:02 DESKTOP-9HGJE25 CRON[2361]: (CRON) info (No
MTA installed, discarding output)
Not on this system. It seems clear that the ansible runs, the output is
logged, but not sent to the "terminal" because, well,
I don't know, but evidently, there's no "terminal" with cron originating
the execution of the shell, perhaps? Any options to ansible for this? Any
options in crontab?
On Thu, 31 Aug 2023 at 18:57, [email protected] <[email protected]>
wrote:
See below.
On Thursday, August 31, 2023 at 8:59:57 AM UTC-6 Will McDonald wrote:
This isn't really an Ansible problem per se unless it's *only* ansible in a
subshell that doesn't run from cron? Have you tested basic cron
functionality using something simple like this (or something even more
basic):
#!/bin/sh
z4=`date +%Y%m%d%H%M`
touch /tmp/${z4}
And then check to see if that file is created every 30 minutes *does* work?
Yes, it does. I know the script is running, because it is much elaborate
than this, creating files, logging, etc.
It's run is annotated in /var/log/cron. If there was an obvious error, like
no execute permission, I'd see something in a CMDOUT () message.
No errors.
I look at the /var/log/ansible.log, and I see the output I'd like to have,
in the ansible.log. They are just not being returned
to the script. It's as if it's a "term" sort of problem. So, in the
ansible.log, I see something like:
2023-08-29 17:38:18,067 p=84629 u=root n=ansible | mainmachine | CHANGED |
rc=0 >>
10.10.11.0##255.255.255.0
101.133.145.94##255.255.255.255
.
.
.
and mayhaps a hundred or so more entries.
First questions that spring to mind are:
- is there anything in the cron log, syslog or journal for the crond
service?
yes. /var/log/cron records it run. ansible.log shows that ansible is
called and generates the desired data. It's not being echoed to the stdout
of the ansible process, it appears.
- is anything else running successfully out of /etc/cron.d / cron.daily
etc?
Yep. All else seems well with the cron.d stuff.
- is crond enabled in whatever init system you're using? (You haven't
stated which distro?)
I'm running this cron on a AlmaLinux release 8.8 (Sapphire Caracal) OS.
On Thu, 31 Aug 2023 at 15:24, Steve Murphy <[email protected]> wrote:
As the subject line says, I can't get this script to run correctly from
cron.
My cron entry (in a file in /etc/cron.d):
======================================
# Run the 30-minly job
SHELL=/bin/bash
PATH=/sbin:/bin/:/usr/sbin:/usr/bin:/root
MAILTO=ROOT
*/30 * * * * root /root/getlist
======================================
/root/getlist perms a+r, a+x, u+w:
=====================================
#!/bin/bash
z4=`ansible mainmachine -m shell -a "psql -t -Upiquah -c
\"subnet.ipaddress || '##' || subnet.netmask from subnet order by
subnet.ipaddress asc;\"" 2>&1 | grep '^ [0-9]'`
echo $z4
=====================================
from which, if you run this "by hand", you'll get some output that looks
like this:
19.20.21.22##255.255.255.255 23.24.25.26##255.255.255.255
130.140.150.160##255.255.255.254
... and so forth.
BUT, if executed from cron, $z4 will be empty.
What do I need to do to in the cron.d file to make this work well?
--
--
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/33ab4c47-f91e-4587-a5f2-08341ecf4fa5n%40googlegroups.com
<https://groups.google.com/d/msgid/ansible-project/33ab4c47-f91e-4587-a5f2-08341ecf4fa5n%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/bc328bfb-e64a-480b-8dcb-47fda8681eb1n%40googlegroups.com.