Ansible和YAML特殊字符

时间:2017-05-09 19:09:13

标签: syntax yaml

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

我应该如何格式化这样,所以我不会得到各种古怪的错误。

shell:OC_EDITOR =“sed -i's / node-selector:。* / node-selector:\”region = primary,zone = blah \“/'”oc edit namespace default

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

2 个答案:

答案 0 :(得分:0)

您可以将环境变量用作任务和注册变量。我没试过这个,但它可能会奏效。

- 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

答案 1 :(得分:0)

我遇到的问题是单引号而不是反斜杠。没有其他角色需要转义。我还用单引号包装了整个命令。

这是通过--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

希望这可以帮助那些人。

更新并删除了额外的反斜杠。