SaltStack cmd.run与卷曲和json体

Mar*_*tin 2 jinja2 salt-stack

我有一个简单的任务,我坚持写盐状态.我需要使用curl和json body调用REST端点.这是

curl localhost/endpoint -d '{"some" : "data"}'

我的想法是简单地使用它并通过使用将其置于盐状态cmd.run.不行.到目前为止我有这个:

{%- set data = {'some': 'data'} %}

Use echo instead of curl:
  cmd.run:
    - name:  echo '{{ data|json }}'
Run Code Online (Sandbox Code Playgroud)

这给了我

failed: Unknown yaml render error; line 5

Use echo instead of curl:
  cmd.run:
    - name:  echo '{"some": "data"}'    <======================
Run Code Online (Sandbox Code Playgroud)

我有Salt版本2014.7.1

Hei*_*ter 7

对我来说问题是curl命令中的":" 被解释为YAML(参见:如何在YAML中转义指示符字符(即:或 - ))

我最终使用了多线方法.这使得我可以在没有转义的情况下编写命令,同时仍然可以正确解释变量(例如柱数据).

例如

Salt state description:
  cmd.run:
    - name: >-
        curl -X GET  "https://api.example.com/client/{{ pillar['client_id'] }}" -H  "X-Auth-Email: name@example.co.za" -H "X-Auth-Key: {{ pillar['api_key'] }}" -H "Content-Type: application/json" --data '{"some_json":true}'
Run Code Online (Sandbox Code Playgroud)