2014-04-22 96 views
7

我試圖用test-kitchen覆蓋java食譜中的屬性。將屬性添加到測試廚房

當我嘗試運行kitchen converge default-centos-64時,出現錯誤的YAML錯誤。

--- 
driver: 
    name: vagrant 
    customize: 
    memory: 1024 
    cpuexecutioncap: 50 

provisioner: 
    name: chef_solo 

platforms: 
    - name: centos-6.4 

suites: 
    - name: default 
    run_list: 
     - recipe[java::default] 
     - recipe[maven::default] 
    attributes: { 
        java.install_flavor: "oracle", 
        java.jdk_version: "7" 
       } 

我把上面的貼到http://yamllint.com/。當我點擊「Go」時,它會刪除以「attributes」開頭的所有行,然後顯示綠色「有效YAML」。

+2

供應的屬性也作爲YAML,而不是作爲JSON。 – StephenKing

+0

謝謝,這工作。你想發佈信用的答案嗎? –

+0

謝謝,我很高興它有幫助。在搜索任何文檔時,我想知道關於github wiki中的示例。 – StephenKing

回答

15

屬性被作爲正常YAML內容:

suites: 
    - name: default 
    run_list: 
     - recipe[java::default] 
     - recipe[maven::default] 
    attributes: 
     java: 
     install_flavor: "oracle", 
     jdk_version: "7" 

Getting Started顯示類似你語法:

suites: 
    - name: default 
    run_list: 
     - recipe[java::default] 
     - recipe[maven::default] 
    attributes: { 'java': { 'install_flavor': 'oracle' } } 
+0

所以'{}'大括號不需要?我一直在成功地使用它們。例如:'attributes:{'java':{'install_flavor':'oracle'}}' –

+0

我使用完整的yaml風格[這裏](https://github.com/TYPO3-cookbooks/gerrit/blob/ 77f05d33aefb93de670796e81c7b3322264c22a4/.kitchen.yml#L30-33),但它似乎並不重要,如果它是完全yaml或整個屬性有效的json散列(我會說你的是不是一個有效的json風格)。我正在更新我的答案。 – StephenKing

+1

很容易將新的紅寶石散列符號與json散列符號混淆。 這是一個紅寶石散列,其中有一個叫做key的符號被映射到一個字符串「value」:'{key:「value」}'。這是一個json hash,對應於 '{「key」:「value」}'。在ruby 2.0之前發現ruby哈希值更容易,他們都是這樣的:{:key =>「value」}' –