代码之家  ›  专栏  ›  技术社区  ›  Drux

运行包含带Ansible的引号的命令[duplicate]

  •  0
  • Drux  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我想跑步 this command 在具有Ansible(版本3.6.5)的远程主机上:

    DEBCONF_DB_OVERRIDE='File /tmp/config.dat' dpkg-reconfigure -fnoninteractive exim4-config
    

    我试着把这个任务写进我的剧本里:

    - name: dpkg-reconfigure exim4-config
      command: DEBCONF_DB_OVERRIDE='File /tmp/config.dat' dpkg-reconfigure -fnoninteractive exim4-config
    

    这将导致以下错误消息:

    失败!=>{“已更改”:false,“cmd”:“'DEBCONF_DB_OVERRIDE=文件 /tMP/CONFIG.DAT'DPKG重新配置-FNONECTIONEXIM4 CONFIG, “msg”:“[Errno 2]没有这样的文件或目录”,“rc”:2}

    我觉得Ansible command 模块放置了额外的周围引号,这似乎干扰了我的。

    那么,我如何用Ansible运行这个命令呢?我尝试过单引号和双引号以及转义字符(使用 \' , \" ,或 \ )但到目前为止毫无用处。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Samiul Amin Shanto    6 年前

    对于自定义命令,应使用 shell 而不是 command :

    - name: dpkg-reconfigure exim4-config
        shell: DEBCONF_DB_OVERRIDE='File /tmp/config.dat' dpkg-reconfigure -fnoninteractive exim4-config