我有这个简单的ansml yaml文件,它工作正常:
---
- hosts: 172.16.10.104
- tasks:
- name: ping
ping: ''
我使用clojure https://github.com/owainlewis/yaml使用clojure生成此Yaml文件:
(defn -main
[& args]
(def data [{:hosts "172.16.10.104"} {:tasks ""} {:name "ping",:ping ""} ])
(def a (yaml/generate-string data :dumper-options {:flow-style :block}))
(println a)
)
此代码可以生成yaml文件:
- hosts: 172.16.10.104
- tasks: ''
- name: ping
ping: ''
它不起作用,“-名称”必须超过“-任务”的两个字符
如果我这样定义数据:
(def data [{:hosts "172.16.10.104"} {:tasks ""} [{:name "ping",:ping ""}]])
它生成此:
- hosts: 172.16.10.104
- tasks: ''
- - name: ping
ping: ''
它也不能工作
我不知道如何编写clojure文件来生成yaml文件,谢谢!
答案 0 :(得分:1)
尝试嵌套:name
地图:
(let [data [{:hosts "172.16.10.104"}
{:tasks [{:name "ping"}
{:ping ""}]}]]
(println (yaml/generate-string data)))
结果:
- {hosts: 172.16.10.104}
- tasks:
- {name: ping}
- {ping: ''}
答案 1 :(得分:1)
此外,您可能要考虑使用github.com/clj-commons/clj-yaml。这是lib circle-ci用于其Yaml的东西