Shell command with problems since 2.0.2.0

My task calls this

`

shell: free | awk '/Mem:/ {print $4}'

`

and the output is empty. Up until Version 2.0.1.0 this correctly output the 4th string of the second line from the free command.

When changing that to

`

shell: echo "free | awk '/Mem:/ {print $4}'" > /tmp/output

`

we get

free | awk '/Mem:/ {print }'

in the file /tmp/out which demonstrates that the $4 is skipped for some not obvious reason.

Q1: Is this a new bug?

Q2: Is there any other way to get the result from the “free” output?

Sorry, just realized that suddenly the shell command is switching to a German context when used through Ansible. I don’t know why, because when I ssh into my host I still get everything in English. But through Ansible the output from the shell command is in German.

Q3: Has that changed in version 2.0.2.0?
Q4: How can I change that to the previous behaviour?

Sorry, I don’t have answer to your questions but I wonder why are you using shell module for this task? Why don’t you just:

ansible host01 -m setup -a "filter=ansible_memfree_mb"

or in playbook:

setup: filter=ansible_memfree_mb

Edgars

trešdiena, 2016. gada 27. aprīlis 08:15:31 UTC+2, Jürgen Haas rakstīja:

@Edgars, this is a great answer to my Q2 :wink: And of course this is a much better way of getting this kind of information and I’m confused why I did it in such a complicated way. This solved the problem I’m having nicely, thanks a lot.

However, just to make sure that we do not run into unintended issues elsewhere, this issue just made me wonder how I could force language to English for Ansible sessions just to make sure I always operate in a defined environment. If anyone knew, I’d be glad to receive a hint.

My best advice is: use -vvvv for verbose output and see what parameters and variables ansible is using… You will probably see something like this:

LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8

Perhaps you can change it in your ansible.cfg like https://docs.ansible.com/ansible/intro_configuration.html#module-lang

module_lang = en_US.UTF-8

Edgars

trešdiena, 2016. gada 27. aprīlis 08:15:31 UTC+2, Jürgen Haas rakstīja:

Perfect, that’s it ! Thanks @Edgars