Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ansible: How to delete a folder and file inside a directory in a single task?

Tags:

ansible

I'm using Ansible 2.3.2.0 and am trying to delete a file and folder inside a directory in one task.

Right now I have this

tasks:

  - name: Removing existing war
    file:
      path: /usr/share/tomcat/webapps/app.war
      state: absent

  - name: Removing existing folder
    file:
      path: /usr/share/tomcat/webapps/app
      state: absent

I cannot simply remove the webapps folder because I do not want to delete other files and folders in there. I want to reduce the number of tasks because I am using Duo push auth and this adds to the deploy time. I've tried looping over files and file globs but for some reason it never works.

http://docs.ansible.com/ansible/latest/playbooks_loops.html#looping-over-files

like image 795
HarlemSquirrel Avatar asked Aug 24 '17 14:08

HarlemSquirrel


1 Answers

If you simply want to delete a directory and its contents, just use the file module and pass the path to the directory only:

tasks:
 - name: Removing
   file:
     path: /usr/share/tomcat/webapps/app
     state: absent

See this post: Ansible: How to delete files and folders inside a directory?

and from the ansible docs:

If absent, directories will be recursively deleted, and files or symlinks will be unlinked.

see: http://docs.ansible.com/ansible/latest/file_module.html

like image 152
spencerwjensen Avatar answered Oct 05 '22 16:10

spencerwjensen