Ansible echo到文件

时间:2016-10-12 22:21:46

标签: ansible yaml

我在这里遇到了一些Ansible / YAML语法。如何将多行(附加模式)回显到文件中?我也不能使用复制模块(包含内容arg),因为它必须附加。

此代码:

- name: Write backup script for each app
  shell: echo | '
      line one
      line two
      line three
      ' >> /manager/backup.sh

错误的荒谬:

"stderr": "/bin/sh:  line one line two line three : command not found"

我正在使用管道因为我认为你如何告诉Ansible你想要多行(保留格式),但也许它被用作shell管道。

1 个答案:

答案 0 :(得分:12)

你想要这样的东西:

- name: Write backup script for each app
  shell: |
    echo 'line one
    line two
    line three' >> /manager/backup.sh

或使用printf明确指定换行符:

- name: Write backup script for each app
  shell: printf 'line one\n
    line two\n
    line three\n' >> /manager/backup.sh

您获得的错误消息非常有意义:您尝试将|命令的输出通过管道传输(echoline one line two line three命令。由于shell没有找到后者,因此报告命令不存在。如果你直接在shell中执行以下操作,情况就是这样:

echo | "line one line two line three" >> /manager/backup.sh

YAML使用|表示多行值,但直接在键后使用,而不是值字段中的任何位置。