2014-04-22 18 views
7

Próbuję przesłonić atrybuty w książce kucharskiej java z test-kitchen.Dodawanie atrybutów do testowania kuchni

Kiedy próbuję uruchomić kitchen converge default-centos-64, pojawia się zły błąd 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" 
       } 

Wkleiłem powyższe w http://yamllint.com/. Kiedy kliknę "Go", usuwa wszystkie linie zaczynające się od "atrybutów", a następnie pokazuje zielony "Valid YAML".

+2

Supply atrybuty także YAML, nie jako JSON. – StephenKing

+0

Dzięki, to zadziałało. Czy chcesz opublikować odpowiedź na kredyt? –

+0

Dziękuję za to, cieszę się, że pomogło. Szukając jakiejkolwiek dokumentacji, zastanawiam się nad przykładem w wiki github. – StephenKing

Odpowiedz

15

Atrybuty są dostarczane jako normalnej zawartości YAML:

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

Getting Started pokazuje składnię podobną do Ciebie:

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

, więc nawiasy "{}" nie są potrzebne? Używałem ich z powodzeniem. przykład: 'attributes: {'java': {'install_flavor': 'oracle'}}' –

+0

Używam całego stylu yaml [tutaj] (https://github.com/TYPO3-cookbooks/gerrit/blob/ 77f05d33aefb93de670796e81c7b3322264c22a4/.kitchen.yml # L30-33), ale wydaje się, że to nie ma znaczenia, jeśli jest to całkowicie yaml lub całe atrybuty ważne hash json (powiedziałbym, że twój nie jest prawidłowym stylem json). Aktualizuję moją odpowiedź. – StephenKing

+1

Łatwo pomylić nową notację ruby ​​z notacją hashową jsona. To jest ruby ​​hash z symbolem zwanym kluczem zamapowanym na ciąg "value": '{key:" value "}'. A to jest skrót json odpowiadający '{" key ":" value "}'. Łatwiej było dostrzec ruby ​​hashe przed Ruby 2.0, wszystkie były takie jak "{: klucz =>" "}" –

Powiązane problemy