gpt4 book ai didi

Ansible 回显到文件中

转载 作者:行者123 更新时间:2023-12-04 13:26:10 30 4
gpt4 key购买 nike

我在这里遇到了一些 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 您想要多行(保留格式)的方式,但也许它被用作外壳管道。

最佳答案

你想要这样的东西:

- 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 使用 |表示多行值,但当直接在键之后使用时,不在值字段中的任何位置。

关于Ansible 回显到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009339/

30 4 0