Evangeline Amalina
Evangeline Amalina

Reputation: 91

How to get the symlink target path in ansible

Want to check if the symlink destination is having the folder name which is passed as extra vars. The below is not working:

- name: Print a debug message
  debug:
    msg: {{package_version}} contains ab_slink.stat.lnk_target
  register: ab_slink_exist
  when: "ab_slink.stat.lnk_target is search '{{package_version}}'"

getting this error:

\[WARNING\]: conditional statements should not include jinja2 templating
delimiters such as {{ }} or {% %}.

Upvotes: 0

Views: 628

Answers (1)

larsks
larsks

Reputation: 312610

The contents of a when directive are evaluated in an implicit Jinja context -- that is, you can pretend they are already surrounded by {{...}} markers. You never nest {{...}} markers; if you want to reference a variable inside a Jinja expression, you just use the variable name. Your task should look something like this:

- name: Print a debug message
  debug:
    msg: "{{package_version}} contains ab_slink.stat.lnk_target"
  register: ab_slink_exist
  when: "ab_slink.stat.lnk_target is search(package_version)"

Except this is still problematic, because you don't generally use debug tasks to set values. I would write something like this:

- name: set ab_slink_exist
  set_fact:
    ab_slink_exist: "{{ ab_slink.stat.lnk_target is search(package_version) }}"

Upvotes: 2

Related Questions