【问题标题】:How to split multiple filters into multiple lines with Ansible?如何使用 Ansible 将多个过滤器拆分为多行?
【发布时间】:2020-01-06 16:03:33
【问题描述】:

这是我的剧本中的一项任务:

- 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 }}"

我正在尝试找到一种方法将多个过滤器行拆分为多行以使其更具可读性,但我没有做任何事情。是否有可能在不使整个内容变得更复杂的情况下阅读?

【问题讨论】:

    标签: ansible multiline ansible-filter


    【解决方案1】:

    你可以试试这样的,

    - 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 }}"
    

    【讨论】:

    • @RicardoAmaral,如果您对答案感到满意,请接受该答案以将此问题标记为已回答。
    【解决方案2】:

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

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

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

    【讨论】:

    • 没用,我收到了这个An exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: 'NoneType' object has no attribute 'group' fatal: [POLYMERBOX]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}
    猜你喜欢
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多