2017-09-26 6 views
0

シェフとテストキッチンが新しく、ランダムなJSONファイルを属性または環境(好ましくは属性)として使用しようとしていますが、残念ながらJSONにアクセスできないレシピからの値。シェフとテストキッチンを使用してJSON値にアクセスする

uat 
├── attributes 
│   ├── dev.json 
│   ├── .kitchen 
│   │   └── logs 
│   │    └── kitchen.log 
│   └── prod.json 
├── Berksfile 
├── Berksfile.lock 
├── chefignore 
├── environments 
│   ├── dev.json 
│   └── prod.json 
├── Gemfile 
├── Gemfile.lock 
├── .kitchen 
│   ├── default-windows.yml 
│   └── logs 
│    ├── default-windows.log 
│    └── kitchen.log 
├── .kitchen.yml 
├── metadata.rb 
└── recipes 
   ├── default.rb 
   ├── prep.rb 
   └── service_install.rb 

これは.kitchen.yml

--- 
driver: 
    name: machine 
    username: sample_user 
    password: sample_pass 
    hostname: 192.168.1.102 
    port: 5985 

provisioner: 
    name: chef_zero 
    json_attributes: true 
    environments_path: 'environments/dev' 

platforms: 
    - name: windows 

suites: 
    - name: default 
    run_list: 
     - recipe[uat::default] 

これはdev.jsonある

私は、次のディレクトリ構造を使用しています:

私は属性で something.rbフォルダやコンテンツを作成した場合

directory "C:/Users/test/#{node['directoryName']}" do 
    recursive true 
    action :create 
end 

:[ 'directoryNameで'] = 'sample_folderを' DEFAULT、それを

このは、レシピprep.rbです魅力的ですが、会社全体のパラメータを格納するJSONファイルを使用する必要があります。

私が間違っていることを見つけるのを助けてください。

答えて

0

したがって、いくつかの問題があります。まず、environments_pathは特定のファイルではなく、フォルダを指しているので、ちょうどenvironments/でなければなりません。次に、実際の環境オブジェクトでなければなりません。スキーマの説明については、https://docs.chef.io/environments.html#jsonを参照してください。第3に、実際にテストノードに環境を適用する必要があります。

provisioner: 
    # Other stuff ... 
    client_rb: 
    chef_environment: dev 
+0

ありがとう、それはうまくいきました。 を ': default_argumentを使用せずにJSONを使用する方法があり{ 「default_attributesは」:{} }' – user3283749

+0

いいえ、あなたは環境オブジェクトのスキーマと一致しなければなりません。 – coderanger