Ah-ha!!!! Found it: I had to modify the script, and turn the z4=`ansible ... 2>&1 | ...` into:
/usr/local/bin/ansible mainmachine -m shell -a "psql ...." | grep '^ [0-9]' > /tmp/z4a z4=`cat /tmp/z4a` So, much to my surprise and dismay, the application of 2>&1 to ansible inside backticks is highly caustic. And, it didn't really matter that I didn't use the 2>&1, as no stderr messages were generated anyway. I am not proficient enough in ansible, nor in the finer points of bash, to render any judgment or condemnation here. So, if anyone else has the same problem, maybe 2 every 10 years, try to remove any filepointer redirections! Thanks to Will McDonald, for his experiments and help! I really appreciate it! On Thursday, August 31, 2023 at 7:18:10 PM UTC-6 [email protected] wrote: > 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/0308d708-65fb-4e17-b670-e249027f530fn%40googlegroups.com.
