The following will fail in Ansible 1.5 but *only *when run with --diff:

---
#  broken_template_diff.yml
- hosts: all
  gather_facts: False
  sudo: False
  tasks:
  - template: src=mytemplate.txt dest=*/tmp*   # BROKEN
  #- template: src=mytemplate.txt dest=/tmp/ # WORKING

When run with

ansible-playbook -vi local broken_template_diff.yml --diff # I could also 
add -C here

this will fail with

fatal: [localhost] => failed to parse: Traceback (most recent call last):
  File 
"/home/vagrant/.ansible/tmp/ansible-tmp-1394180980.94-199465317382554/slurp", 
line 1144, in <module>
    main()
  File 
"/home/vagrant/.ansible/tmp/ansible-tmp-1394180980.94-199465317382554/slurp", 
line 67, in main
    data = base64.b64encode(file(source).read())
IOError: [Errno 21] Is a directory: '/tmp'

When run without --diff or after adding the trailing /, it will work.

In this particular case it actually tells me what is the problem but when I 
run it with my slightly different production configuration and against 
CentOS 5.9 (with an older Python) it is even worse because I get

fatal: [10.0.2.2] => failed to parse: 
SUDO-SUCCESS-advisvcbctshnxbofoyvoppteorclbaf
Traceback (most recent call last):
  File "/tmp/ansible-tmp-1394181207.71-130165043237097/slurp", line 1144, 
in ?
    main()
  File "/tmp/ansible-tmp-1394181207.71-130165043237097/slurp", line 67, in 
main
    data = base64.b64encode(file(source).read())
*IOError: [Errno 21] Is a directory*

- notice it does not tell me the name of the path that is directory even 
though template+diff does not expect that. So it might seems that it is the 
source that is a directory, which is pretty confusing.

SUMMARY


   1. --diff should not fail when there is missing the trailing slash in 
   dest=/path/to/directory (since non-diff does not fail either) or it should 
   at least provide much better error message
   2. Under CentOS 5.9 (<=> Python 2.4) the error message does not contain 
   the directory's name, which makes it very confusing


Should I open an issue for #1?

Thank you!

-- 
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/c8653642-fb5e-4282-8e9e-b7cdcdad91fa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to