2014-09-12 3 views
0

Chef 속성, 속성 유형 및 그 선행 수준을 어디에서 정의 할 수 있는지 알고 있습니다. 나는 그것들이 내부적으로 어떻게 저장되는지 이해하기를 원한다. 내부적으로 Chef 속성을 저장하는 방법

한다고 가정

나는 속성

default[:app][:install] = "/etc/app" 

1) 어떻게 내부적으로 저장을 선언? 그것은 노드 객체의 트리 구조 (heirearchy)에서 사용하고 있습니까? 아니면 해시 맵 또는 노드 객체의 변수 목록입니까?

2) 또한 요리 책의 대부분에서 나는 속성이 2 또는 3 레벨로 선언되어있는 것을보고 표준 이상의 것이거나 모범 사례인지 이해하지 못합니다. 속성을 선언해야하는 방식에 대한 지침이 있습니까? 내부 저장 장치와 관련이 있습니까? 속성을

default[:appinstall]= "/etc/app" 

으로 선언 할 수 없으며 아래의 방법으로 내 레시피에 액세스 할 수 있습니까?

node[:appinstall] 

답변

2

단지 네 개의 Mashes (문자열 대 기호 키 픽업을 수행하는 Hash의 하위 클래스). node['foo']을 통해 병합 된보기에 액세스하면 Chef::Node::Attribute 개체를 사용하여 리프 값을 찾을 때까지 병렬로 4 개를 모두 통과합니다.

문자열 키가 기호보다 선호되지만 표시 한 내용은 속성을 설정하고 사용하는 데 적합합니다. 또한 요리 책의 이름을 가진 속성을 일반적 범위로 사용해야합니다.

default['mycookbook']['appinstall'] = '/etc/app' 

이렇게하면 다른 요리 책과의 충돌 가능성이 줄어 듭니다.

+0

그런데 왜 기호가 기호보다 선호됩니까? 나는 동일한 속성을 여러 번 사용하면 기호를 사용하는 것이 더 나은 곳을 읽었다. –

+2

대부분 루비에 대해 잘 모르는 사람들에게 더 명확하기 때문입니다. 거의 모든 언어가 문자열을 나타 내기 위해 인용 문자열을 사용했지만, 특히 기호와 Ruby 구문은 설명하기가 어렵습니다. – coderanger

관련 문제