+-
Ansible查找,转义单引号。

我试图在 ansible 中运行一个 pip 和 lookup 命令,就像这样。

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

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

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

即输出

12 May 04:47:32 AM

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

2
投票

我可以这样写,避免使用嵌套引号。

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

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

这就是使用YAML 块状标量 经营者(>)进行引用。

同时注意,这里我们将 TZ 内的环境变量。pipe 查找,因为使用 environment 钥匙在这种情况下无法使用。