Deleting files based on a name pattern

7,997 views
Skip to first unread message

James Carroll

unread,
Apr 2, 2014, 1:05:24 PM4/2/14
to ansible...@googlegroups.com
I'm trying to clear a directory with certain file names based on a pattern and it doesn't seem to work:

- name: Remove any extant jars
  file: name="{{app_home}}/server/deploy/{{item}}" state=absent
  with_items:
    - "*token*.jar"
    - "*opm*.jar"
    - "*pf-sm*.jar"

This isn't working; the existing jars stay there even though Ansible reports "CHANGED" on all three.

I need this since these jars have their versions in their names and I need to make sure that they are deleted prior to pushing the updated files.

Thanks,



__________________________________________________________________
The information contained in this email message and any attachment may be privileged, confidential, proprietary or otherwise protected from disclosure. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, copying or use of this message and any attachment is strictly prohibited. If you have received this message in error, please notify us immediately by replying to the message and permanently delete it from your computer and destroy any printout thereof.

Michael DeHaan

unread,
Apr 2, 2014, 4:33:19 PM4/2/14
to ansible...@googlegroups.com
Nope, the file module doesn't accept shell wildcards, it needs real filenames.

I'd shell out to rm in this case, though you won't be able to use the "deletes=" keyword to the shell module to override the "changed value" so it will register as a change every time.



--
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/192f125e-8d10-4b6e-8887-1b71e7c67db4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

James Carroll

unread,
Apr 3, 2014, 11:37:55 AM4/3/14
to ansible...@googlegroups.com
Thanks.  I kind of came to that same conclusion about shelling it out, but hoping I was missing something. 

James

David Adams

unread,
Apr 3, 2014, 1:45:01 PM4/3/14
to ansible...@googlegroups.com
You could shell out to collect the filenames if you still want to use the Ansible objects to do the deletions (this code assumes your shell is bash):

- shell: ls {{app_home}}/server/deploy/*{token,opm,pf-sm}*.jar
  register: jars_to_cleanup
  ignore_errors: yes

- file: name={{item}} state=absent
  with_items: jars_to_cleanup.stdout_lines

Not sure if that's better or worse than just shelling out for the rm statement, but it's an option. Perhaps Ansible needs a glob-expansion function/operator to handle such a case?


Reply all
Reply to author
Forward
0 new messages