Ansible 和 YAML 特殊字符



我有一个非常复杂的命令,我需要通过shell:命令运行,但它有我需要保留的各种特殊字符。我还希望能够将 var 添加到多个环境的命令行中。

应该如何格式化它,这样我就不会收到各种古怪的错误。

shell: OC_EDITOR="sed -i 's/node-selector:

.*/node-selector: \"region=primary, zone=blah\"/'" oc edit namespace default

稍后我将区域更改为变量 {{ 区域 }}

您可以将 as 任务和注册变量与环境变量一起使用。我还没有尝试过这个,但它可能会起作用。

- name: Echo OC_EDITOR shell: "echo $OC_EDITOR" environment: OC_EDITOR: "sed -i 's/node-selector:.*/node-selector: "region=primary, zone=blah"/'" oc edit namespace default register: sed_command

- name: Execute OC_EDITOR shell: sed_command

我遇到的问题是单引号而不是反斜杠。不需要转义其他字符。我还用单引号将整个命令括起来。

这是通过 --check 函数工作的最终工作命令。我正在重新运行以验证它是否有效。

- name: EXECUTE - Change the node selectors for the default and openshift-infra projects
  shell: 'OC_EDITOR="sed -i ''s/node-selector:.*/node-selector: region=infra, zone=blah"/''" oc edit namespace default'
  ignore_errors: True

希望这对那里的人有所帮助。

更新并删除了多余的反斜杠。

最新更新