我有一个简单的ansible yaml文件,它工作得很好:
---
- hosts: 172.16.10.104
- tasks:
- name: ping
ping: ''我使用一个clojure https://github.com/owainlewis/yaml来生成这个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: ''它不能工作,"- name“必须超过"-tasks”的两个字符
如果我这样定义数据:
(def data [{:hosts "172.16.10.104"} {:tasks ""} [{:name "ping",:ping ""}]])它会生成以下内容:
- hosts: 172.16.10.104
- tasks: ''
- - name: ping
ping: ''它也不能工作
我不知道如何编写clojure文件来生成这样的yaml文件,谢谢!
发布于 2019-01-22 16:29:22
尝试嵌套:name映射:
(let [data [{:hosts "172.16.10.104"}
{:tasks [{:name "ping"}
{:ping ""}]}]]
(println (yaml/generate-string data)))with结果:
- {hosts: 172.16.10.104}
- tasks:
- {name: ping}
- {ping: ''}发布于 2019-01-22 17:00:22
此外,您可能需要考虑使用github.com/clj-commons/clj-yaml。这是lib circle-ci用来做yaml的东西
https://stackoverflow.com/questions/54303944
复制相似问题