首页 > 解决方案 > 如何通过clojure编写一个ansible yaml文件?

问题描述

我有这个简单的 ansible 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: ''

它不能工作,“-name”必须超过“-tasks”的两个字符

如果我这样定义数据:

(def data [{:hosts "172.16.10.104"}  {:tasks ""} [{:name "ping",:ping ""}]])

它产生这个:

- hosts: 172.16.10.104
- tasks: ''
- - name: ping
    ping: ''

它也行不通

我不知道如何编写clojure文件来生成这样的yaml文件,谢谢!

标签: clojureyaml

解决方案


尝试嵌套: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: ''}

推荐阅读