2011-10-16 2 views
20

저는 노드 이름 (knife bootstrap -N)을 템플릿으로 가져 오는 방법을 알아 내려고 노력했습니다. 나는 수십 가지 다른 아이디어를 시도했지만 아직 효과가있는 것을 찾지 못했습니다. 누구든지 요리사 레시피에서이 방법에 액세스하는 방법을 알고 있습니까?요리사 템플릿의 노드 이름은 무엇입니까?

또한 요리사가 사용할 수있는 모든 변수를 나열하는 방법이 있습니까?

답변

30

Chef::Config[:node_name]을 귀하의 제조 방법에서 사용할 수 있습니다. 나는 Opscode의 요리사 - 클라이언트 요리 책에서 이것을 발견했습니다.

+2

@anaudmeuret와 동의합니다.이 솔루션은 Shef와 조리법에서 저에게 효과적이었습니다. – jslatts

+1

원래 질문은 템플릿에서 노드 이름에 액세스하는 방법입니다. 이 대답은 그 일을하지 않습니다. 실제로 <% = node.name %>는 .erb 파일의 전체 구문이며 템플릿의 노드 이름에 액세스하는 방법입니다. – Andrew

+0

템플릿 구문과 래서 피 구문이 다른 것 같습니다. <% = node.name %> 구문을 사용하는 템플릿이 있습니다 그리고 요리사에서 위의 Chef :: Config [: node_name] 구문을 사용했습니다. – jorfus

34

청소기보다 간결 방법은 Attributes 위키 페이지에 표시된다. "노드"

node.name 
+1

이것은 FQDN을 제공합니다. 짧은 이름을 얻으려면? –

+2

잘 모르겠지만 node.name.split ('.') [0]은 작동합니다. –

+2

요리사 속성을 가져올 때는 항상 노드 [: attribute] 구문을 사용해야합니다. ohai dervied 속성은 node [: hostname] –

4

가와

knife node edit <name> -a 

첫번째 레벨 키에 액세스 할 모든 노드 특정 속성 유형 명령을 보려면 접두사.

{ 
    "name": "n1", 
    ... 
    "hostname": "chef-n1", 
    "fqdn": "chef-n1.dan.lan", 
    "domain": "dan.lan", 
    "ipaddress": "192.168.4.4", 
    "macaddress": "52:54:00:72:E7:C5", 
관련 문제