Ansible : create a relative symlink

firasKoubaa picture firasKoubaa · Feb 1, 2018 · Viewed 62.1k times · Source

In my playbook, I need to create a symbolic link for a repo.

With command (shell) it may work like this:

########## Create symbolic link 
- name: Create symbolic link 
  shell : ln   -s  "{{SOURCE_FOLDER}}"  SYMLINK
  args :
    chdir : "/opt/application/i99/"
  when:
    - ansible_host in groups['ihm']

-> like this my symbolic link is created directly inside i99 repo /

SYMLINK -> SOURCE_FOLDER

But while doing it with the Ansible file module, like this:

########## Create symbolic link 
- name: Create symbolic link 
  file:
   src: "/opt/application/i99/{{SOURCE_FOLDER}}/"
   dest: "/opt/application/i99/SYMLINK"
   state: link
  when:
    - ansible_host in groups['ihm']

My output is this :

SYMLINK -> /opt/application/i99/SOURCE_FOLDER

As I don't want that it points to the whole path, and I need to obtain the first format:

SYMLINK -> SOURCE_FOLDER

How can I do it?

Answer

techraf picture techraf · Feb 1, 2018

Simply:

- name: Create symbolic link 
  file:
    src: "{{SOURCE_FOLDER}}"
    dest: "/opt/application/i99/SYMLINK"
    state: link

As you can see in the manual for the file module:

src  Will accept absolute, relative and nonexisting paths. Relative paths are not expanded.