符号链接的撇号和空格

问题描述 投票:0回答:1

通过我的 Ansible 任务为特定分支创建

symlink
,我发现它在创建的
symlink
中添加了空格和撇号。

 - name: "Symlink to git branch"
  file:
    src: "{{ repository }}/{{ application }}"
    dest: "/path/to/my/{{ symlink_name }}"
    state: link
  vars:
    symlink_name: >-
      {% if git_branch == 'development' %}
      my-development
      {% elif git_branch == 'master' %}
      newest
      {% elif git_branch == 'hotfix' %}
      my-hotfix
      {% endif %}

结果是:

root# ls -lha
' my-development ' -> /path/to/my/symlink

它基于

development
分支。我尝试在
symlink_name
之前和之后添加不同的标志,不幸的是没有成功。

ansible
1个回答
0
投票

引号只是操作系统指示符号链接包含空格的一种方式,它们不是链接的一部分。

不过,这些空格来自 Jinja 表达式,因为 Jinja 语句侵入的空格会阻止所有内容位于新行中。
请注意,您使用折叠的 YAML 语法会导致这种情况:它用空格替换新行!

解决此问题的一个简单方法是使用 Jinja 的 whitespace control

vars:
  symlink_name: >-
    {%- if git_branch == 'development' -%}
    my-development
    {%- elif git_branch == 'master' -%}
    newest
    {%- elif git_branch == 'hotfix' -%}
    my-hotfix
    {%- endif -%}

解决此问题的另一种可以说更紧凑的方法是制作分支及其等效符号链接的字典:

- name: "Symlink to git branch"
  file:
    src: "{{ repository }}/{{ application }}"
    dest: "/path/to/my/{{ symlink_name[git_branch] }}"
    state: link
  vars:
    symlink_name:
      development: my-development
      master: newest
      hotfix: my-hotfix
© www.soinside.com 2019 - 2024. All rights reserved.