A couple errors recently cropped up

240 views
Skip to first unread message

Daniel Ottey

unread,
Jun 3, 2014, 9:34:55 AM6/3/14
to ansible...@googlegroups.com
A couple errors have recently cropped up when using Ansible, and the latest is causing me to not be able to use it at all.  I tried searching for the fatal error(s), but was not able to find anythin mysef,  I'm hopeful that this forum can help me out.

My OS is RHEL 6.4 and it also pulls packages from EPEL.  My ansible is "ansible 1.5.5" from EPEL.

Command:

ANSIBLE_SSH_ARGS="" ansible-playbook -T 30 -c ssh -s -K -i ~/my_ansible_inventory.txt -l labadmin.lab.boomi.com --tags zabbix-agent /etc/ansible/site.yml

The first warning message I have been able to find documented elsewhere, and I think it is not related to the fatal error.

Warning:

/usr/lib64/python2.6/site-packages/pycrypto-2.6.1-py2.6-linux-x86_64.egg/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.
  _warn("Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
sudo password: 

So I think from what I read elsewhere that I can ignore that warning until the version of libgmp is updated.

But here is the fatal error:

PLAY [apply common configuration to all nodes] ******************************** 

GATHERING FACTS *************************************************************** 
fatal: [labadmin.lab.boomi.com] => Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/ansible/runner/__init__.py", line 532, in _executor
    exec_rc = self._executor_internal(host, new_stdin)
  File "/usr/lib/python2.6/site-packages/ansible/runner/__init__.py", line 564, in _executor_internal
    module_vars = template.template(self.basedir, self.module_vars, host_variables)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 349, in template
    d[k] = template(basedir, v, vars, lookup_fatal, depth, expand_lists, fail_on_undefined=fail_on_undefined)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 331, in template
    m = _legacy_varFind(basedir, varname, vars, lookup_fatal, depth, expand_lists)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 245, in _legacy_varFind
    replacement = instance.run(args, inject=vars)
  File "/usr/lib/python2.6/site-packages/ansible/runner/lookup_plugins/pipe.py", line 35, in run
    p = subprocess.Popen(term, cwd=self.basedir, shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
  File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory


FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/home/dottey/site.retry

labadmin.lab.boomi.com     : ok=0    changed=0    unreachable=1    failed=0

Any insight into what is causing the fatal error - and if there is anything I can do to resolve it? 

James Cammarata

unread,
Jun 3, 2014, 11:56:21 AM6/3/14
to ansible...@googlegroups.com
Correct, the warning message can be ignored, and there is a configuration setting (system_warnings in your ansible.cfg) that can be set to "False" to disable it.

The fatal error appears to be reporting that the executable you're trying to call via the pipe lookup is not being found at the path specified. Can you share what that is, and validate that the binary is there and executable by the user that the play is running with to make sure there are no security issues?


--
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 ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/52b74376-888b-4423-a56b-42da16f7d4a5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Daniel Ottey

unread,
Jun 3, 2014, 12:00:58 PM6/3/14
to ansible...@googlegroups.com
Thanks for your response.  Sorry for not being sure...  But you're saying I'm calling an executable via a pipe lookup ...  And I have no idea what that means.  I'm certainly not doing it intentionally.  You ask me to validate "the binary is there" but I don't know what binary to look for.

Is this happening during the "Gathering Facts" or afterward?

Is the error happening on the local side or the remote side?

James Cammarata

unread,
Jun 3, 2014, 12:36:56 PM6/3/14
to ansible...@googlegroups.com
Did you download a role from Galaxy or somewhere else? From the output of the error, it looks like somewhere in your play this appears:

{{ lookup('pipe','some_executable_name_here') }}

So you may want to grep for 'lookup' or 'pipe' in your files.



Daniel W. Ottey

unread,
Jun 3, 2014, 3:04:00 PM6/3/14
to ansible...@googlegroups.com
I copied some code from some place (which previously worked).  My code does not have the word "pipe" anywhere.  The only part that has "lookup" is here:

- name: Configure ansible users SSH key
  authorized_key: user=ansible key="{{ lookup('file', '/etc/ansible/roles/common/files/ansible-id_rsa.pub') }}"
  tags: ansible-user-setup

But that tag shouldn't be called when I use "--tags zabbix-agent".  Also that particular file is set permissions 644.


Michael DeHaan

unread,
Jun 6, 2014, 8:28:14 AM6/6/14
to ansible...@googlegroups.com
What about a "with_pipe" ?

Did you check both the templates and the playbooks?  It seems to be in a template.


Daniel Ottey

unread,
Jun 6, 2014, 3:18:27 PM6/6/14
to ansible...@googlegroups.com
Thanks all.  I was finally able to narrow the error down to this variable file /etc/ansible/roles/common/vars/main.yml

---
datestamp: $PIPE(date +%Y%m%d-%H%M%S)

I'm pretty sure that $PIPE worked previously.  So I don't know if something broke in an updated ansible package.

Does anyone have a recommendation for a replacement?

Matt Martz

unread,
Jun 6, 2014, 3:21:09 PM6/6/14
to ansible...@googlegroups.com
datestamp: "{{ lookup('pipe', 'date +%Y%m%d-%H%M%S') }}"

That should be the updated syntax for what you are trying to do.



For more options, visit https://groups.google.com/d/optout.

Daniel W. Ottey

unread,
Jun 6, 2014, 3:36:26 PM6/6/14
to ansible...@googlegroups.com
Thanks Mark.  Unfortunately that still did not work for me.  Here is the new error (I wish the ansible errors were a little more straight-forward)

GATHERING FACTS *************************************************************** 
fatal: [labadmin.lab.boomi.com] => Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/ansible/runner/__init__.py", line 532, in _executor
    exec_rc = self._executor_internal(host, new_stdin)
  File "/usr/lib/python2.6/site-packages/ansible/runner/__init__.py", line 564, in _executor_internal
    module_vars = template.template(self.basedir, self.module_vars, host_variables)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 349, in template
    d[k] = template(basedir, v, vars, lookup_fatal, depth, expand_lists, fail_on_undefined=fail_on_undefined)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 321, in template
    varname = template_from_string(basedir, varname, vars, fail_on_undefined)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 562, in template_from_string
    res = jinja2.utils.concat(rf)
  File "<template>", line 8, in root
  File "/usr/lib64/python2.6/site-packages/jinja2/runtime.py", line 179, in call
    return __obj(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 554, in my_lookup
    return lookup(*args, basedir=basedir, **kwargs)
  File "/usr/lib/python2.6/site-packages/ansible/utils/template.py", line 91, in lookup
    ran = instance.run(*args, inject=vars, **kwargs)
  File "/usr/lib/python2.6/site-packages/ansible/runner/lookup_plugins/pipe.py", line 35, in run
    p = subprocess.Popen(term, cwd=self.basedir, shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
  File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory


FATAL: all hosts have already failed -- aborting

--
You received this message because you are subscribed to a topic in the Google Groups "Ansible Project" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ansible-project/DL7_u_rWauA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.

Brian Coca

unread,
Jun 6, 2014, 3:46:36 PM6/6/14
to ansible...@googlegroups.com
it seems like you are doing a lookup with pipe and the program you are calling cannot be found.


--
Brian Coca
Stultorum infinitus est numerus
0110000101110010011001010110111000100111011101000010000001111001011011110111010100100000011100110110110101100001011100100111010000100001
Pedo mellon a minno

James Cammarata

unread,
Jun 6, 2014, 9:44:04 PM6/6/14
to ansible...@googlegroups.com
Generally we consider any traceback like the above to be a bug, regardless of the cause, so please do open a github issue for this. Beyond that, as Brian mentioned, apparently it's having trouble executing the date command as it is specified. I tested the above syntax with this small playbook:

$ cat test_pipe_date.yml 
- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    datestamp: "{{ lookup('pipe', 'date +%Y%m%d-%H%M%S') }}"
  tasks:
  - debug: var=datestamp

And it worked as expected (with the current devel branch):

TASK: [debug var=datestamp] *************************************************** 
ok: [127.0.0.1] => {
    "datestamp": "20140606-204031"
}

So this appears to be something specific to your platform or environment.



Reply all
Reply to author
Forward
0 new messages