我正在尝试在“runcmd”块内编辑 YAML 文件。在 Bash 中,我的命令按预期工作。这是:
yq -i '.block1 += {"path": "dir1"} ' /ws1/project.yml
.
但是,它在“runcmd”块中不起作用。当我将此命令包含在 runcmd 块中时,它会完全破坏我的 cloud-init。我无法访问主机,因为我添加 SSH 密钥的 user 块不起作用。
您能告诉我如何正确转义特殊字符以确保cloud-init正确执行吗?
但是,更简单的命令,例如
yq -i '.block1 += "path" ' /ws1/project.yml
功能正常并且不会破坏整个云配置。我尝试了各种方法来转义双引号、大括号、冒号和 dir1 之前的空格,但没有成功。
Runcmd 允许不需要转义的列表语法:
runcmd:
- [yq, -i, '.block1 += {"path": "dir1"} ', /ws1/project.yml]