我在这里遇到了一些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管道。
答案 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
您获得的错误消息非常有意义:您尝试将|
命令的输出通过管道传输(echo
到line one line two line three
命令。由于shell没有找到后者,因此报告命令不存在。如果你直接在shell中执行以下操作,情况就是这样:
echo | "line one line two line three" >> /manager/backup.sh
YAML使用|
表示多行值,但直接在键后使用,而不是值字段中的任何位置。