I'm writing a play to create a few symlinks in my app directory that link 
to some shared directories on a NFS mount. 

Because of the way the application is, in the location where I'm trying to 
place the symlink, there may or may not be a directory that already exists. 
I want to make sure that directory is deleted first, then a symlink created 
in it's place to point to the corresponding directory on the NFS mount. 

I have a play which does this fine but I wanted some input to make sure 
100% that if the symlink is already created, then deleting the directory 
with NEVER delete any contents from the NFS mount. 

# set list of directories as variable
- name: Set dirs variable
  set_fact:
    dirs_to_symlink:
      - { src: /nfs/audio, dest: /var/web/site/audio}
      - { src: /nfs/downloads, dest: /var/web/site/downloads}
      - { src: /nfs/images, dest: /var/web/site/images}

# get stat information about the directories
- name: check if directories exist
  stat: path={{ item.dest }}
  register: dir_check
  with_items: "{{ dirs_to_symlink }}"


- debug: msg="exists={{ item.stat.exists }}, islnk={{ item.stat.islnk }}, 
isdir={{ item.stat.isdir }}"
  with_items: "{{ dir_check.results }}"

# go through the stats and do some checks, if directories exist delete 
them, otherwise leave it alone
- name: remove directories ready for sym links
  file: path={{ item.item.dest }} state=absent
  when:
    - item.stat.exists == true
    - item.stat.islnk == false
    - item.stat.isdir == true
  with_items: "{{ dir_check.results }}"

# go ahead and create symlinks to directories on the nfs mount 
- name: create sym links for assets
  file: src={{ item.src }} dest={{ item.dest }} state=link force=yes
  with_items: "{{ dirs_to_symlink }}"

This works fine, it doesn't delete the contents of the directory on the NFS 
mount if the symlink does exist. Great! 

But if checking the following enough?

    - item.stat.exists == true
    - item.stat.islnk == false
    - item.stat.isdir == true

Are there any other things I can check for to make sure that...

file: path={{ item.item.dest }} state=absent

Will not accidentally on purpose delete a directory on the NFS 
mount...which would be very very bad! 

Any advise or extra checks that come to mind would be awesome.

-- 
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/91fffdc9-a238-4989-8285-1348a45e21e4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to