Ansible 查找,转义单引号

Ansible lookup, escaping single quotes

我正在尝试 运行 ansible 中的 pip 和查找命令,例如:

      set_fact: mydate="{{lookup('pipe','date +%d %b %r %Z')}}"

上面的命令失败了,因为我需要这部分 +%d %b %r %Z 放在引号中。更准确地说,这是 shell 我试图在 ansible 中使用 lookup

运行 命令

sh-4.4$ TZ=":US/Eastern" date +'%d %b %r'

给出输出

12 May 04:47:32 AM

但不知何故,当我尝试将它添加到查找中并在 ansible 中进行管道传输时,由于我想是错误的引号转义,这不起作用? .我如何 运行 shell 命令使用 ansible 管道和带引号的查找模块

我会这样写,避免嵌套引号:

- hosts: localhost
  tasks:
    - set_fact:
        date_utc: >-
          {{ lookup('pipe', 'TZ=UTC date "+%d %b %r %Z"') }}

    - debug:
        msg:
          - "{{ date_utc }}"

这是使用 YAML block scalar 运算符 (>) 进行引用。

另请注意,这里我们在 pipe 查找中设置 TZ 环境变量,因为在这种情况下使用 environment 键将不起作用。