2017-05-02 4 views
1

검색 기준과 일치하는 모든 노드의 배열을 만드는 이와 같은 약간의 코드가 있습니다. 로드 밸런서의 각기 다른 맛을 가지고 있습니다. 각로드 밸런서는 자신의 요리사 역할을합니다.요리사 노드의 현재 역할

난 내가 역할을 빼고 나중에 사용하기 위해 변수에 넣어 찾고 knife node edit max_data_lb-1

"run_list": [ 
    "role[max_data_lb]" 
] 

으로 원하는 것을 볼 수 있습니다. 특정 역할이 현재 node.role?('name')과 같은 run_list에 있는지 확인할 수있는 방법이 많이 있지만 부울 만 반환합니다. run_list에서 역할 배열을 반환하는 방법을 알 수 없습니다.

flavor = '#{node.role}' 
# Somehow scrapes the node data for the role on the currently processing node. 
#max_data_lb in one of my cases. 

⚠ lb_q = "roles:#{flavor} AND chef_environment:#{node.chef_environment}" 
    lb_array = search(:node, lb_q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort 


#Code I'm trying to generalize and replace 
⚠ #max_data_lb_q = "roles:max_data_lb AND chef_environment:#{node.chef_environment}" 
⚠ #max_data_lb_array = search(:node, q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort 

⚠ #maxapi_lb_q = "roles:max_api_lb AND chef_environment:#{node.chef_environment}" 
⚠ #maxapi_lb_array = search(:node, q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort 

답변

1

노드는 요리사가 자동으로 노드의 실행 목록에서 모든 역할을 저장하는 roles 속성을 가지고 있습니다. 다음과 같은 레시피에서 액세스 할 수 있습니다.

my_roles = node['roles'] #or node[:roles] 

속성에 액세스하는 데 선호하는 문자열 또는 기호.

+0

감사합니다. 이 문서는 어디에 문서화되어 있습니까? 내가 물어보기 전에 나는 꽤 오랫동안 보았다. http://www.rubydoc.info/gems/chef/Chef/Node, 특히 여기에서 –

+0

자동 생성 된 문서는 사용하지 않는 것이 좋습니다. Chef는 YARD를 지속적으로 사용하지 않지만 계속 노력하고 있습니다. – coderanger

+0

다양한 자동 속성 (주로 Ohai 출신)에는 모든 것을 나열하기에는 너무 많은 항목이 있지만 일부 주요 항목은 https://docs.chef.io/attributes.html#automatic-ohai에 문서화되어 있습니다. – coderanger

관련 문제