2014-05-14 6 views
2

나는 vagrant + chef-solo + barkshelf 플러그인을 사용하고 있습니다. 내 Vagrantfile에 다음과 같은 내용이 있습니다.chef.json의 일부를 데이터베이스로 이동할 수 있습니까?

여기에 더 많은 구성을 추가하면 내 Vagrantile이 빠르게 지저분 해집니다. 나는이 chenge하려고했다, 그래서 나는 다음과 같은 내용으로 databags/postgresql/json_attribs.json 파일을 만들었습니다 : 내 Vagrantfile에서

{ 
    "postgresql": { 
    "password": { 
     "postgres": "iloverandompasswordsbutthiswilldo" 
    } 
    } 
} 

및 수정 된 내용 : 그러나 그것은 작동하지 않습니다, 내가 갖는

chef.json = { 
    :postgresql => ["json_attribs"], 
    "database" => { 
    "create" => ["chembl_18"] 
    }, 
... 
} 

을 :

==> default: 58>> default['postgresql']['dir'] = "/etc/postgresql/#{node['postgresql']['version']}/main" 
... 
==> default: [2014-05-14T12:36:51+00:00] ERROR: Running exception handlers 
==> default: [2014-05-14T12:36:51+00:00] ERROR: Exception handlers complete 
==> default: [2014-05-14T12:36:51+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out 
==> default: [2014-05-14T12:36:51+00:00] FATAL: TypeError: can't convert String into Integer 

이렇게 여러 설정 파일을 여러 개의 개별 파일로 나누려면 어떻게해야합니까?

답변

5

아니요, 제조 코드를 변경하지 않고 데이터 가방으로 옮길 수는 없습니다.

속성 (사용자가 설정 한 항목)은 JSON 데이터를 저장하는 데이터 가방과 구별됩니다. 데이터 가방의 데이터는 요리 책에서 명시 적으로 읽을 때까지 Chef Server에 "거짓말"합니다.

데이터 봉지에서 읽는 것은 search(), data_bag()data_bag_item() 함수를 사용하여 수행 할 수 있습니다 (documentation 참조).

Vagrantfile이 어수선하게 흩어지는 것을 방지하려면 role 또는 wrapper cookbook을 사용해야합니다.