如何使用 Ansible 将多个过滤器拆分为多行?

How to split multiple filters into multiple lines with Ansible?

这是我的剧本中的任务:

- name: Parse 'LANGUAGE' from current locale and language configuration
  set_fact:
    locale_language: "{{ locale_status.stdout | regex_search('LANGUAGE=([^\n]+)', '\1') | default([locale_lang], true) | first }}"

我正在尝试找到一种方法将多个过滤器行拆分为多行以使其更具可读性,但我所做的一切都不起作用。甚至可以不让整个事情变得更复杂阅读吗?

一旦 Jinja 解析开始,(据我所知和经验)它就变得对空白不敏感;所以,只需使用正常的 YAML scalar line folding 构造,您就可以开始比赛了:

locale_language: >-
  {{- locale_status.stdout
  | regex_search('LANGUAGE=([^\n]+)', '\1')
  | default([locale_lang], true)
  | first -}}

在 Jinja 表达式的开头和结尾使用 "whitespace consuming operators" 由您自行决定(当然,取决于最终事实是否容忍空格)

你可以这样试试,

- name: Parse 'LANGUAGE' from current locale and language configuration
  set_fact:
    locale_language: "{{ locale_status.stdout \
                     | regex_search('LANGUAGE=([^\n]+)', '\1') \
                     | default([locale_lang], true) \
                     | first }}"

因为我已经测试了下面的这个任务并且它工作正常,

tasks:
    - set_fact:
        locale_language: "{{ shubham \
                         | quote }}"
    - debug:
        msg: "{{ locale_language }}"