2013-07-31 2 views
4

에 내 문제의 요점을 따기하지 여기에 있습니다 :요리사 - 솔로의 nginx 조리법 내 속성

https://gist.github.com/tsabat/a8f27ae6ac7d1fd3b6f7

높은 수준의 문제는 요리사 솔로 속성에 픽업하지 않는 것입니다 내 attriutes/default.rb 파일에 조리법을 설정했습니다.

저는 최근에 10 세부터 11 세 주방장으로 바꿨습니다. 몇 가지 큰 변화가 저를 배럴당 이상으로 가지고 있다고 생각합니다.

도와주세요.

+1

보세요 [여기] (http://stackoverflow.com/questions/17679898/how-to-update-nginx-via-chef/17710858?noredirect=1#comment25813333_17710858). 귀하의 문제는 그 문제와 관련이있는 것처럼 보입니다. – cassianoleal

+0

당신이 맞습니다. 그것은 그 일과 관련이 있습니다. 나는 조리법의 속성에 의존하지 않고 이것을 해결했다. 대신 역할에 내 속성을 뒤엎었다. – timsabat

+0

Oi. 나는 셰프 솔로 (chef-solo)를 사용하여 잠시 동안이 같은 문제에 직면 해왔다. 이걸 물어 줘서 고마워. –

답변

0

귀하의 요지에 답장되었습니다.

다른 기본 속성 "default [ 'nginx'] [ 'version'] = 1.5.3"이 필요하거나 컴파일 플래그 --prefix을 무시합니다.

+0

해당 속성이 정의되어 있어도 여전히 잘못된 접두어가 표시됩니다. 요점을 확인하십시오. – timsabat

+0

이것은 실제로 컨버전스 및 요리사 11의 순서와 관련이 있습니다. 속성을 역할로 옮기면 모든 것이 올바르게 작동하기 시작했기 때문입니다. – timsabat

0

요리사가 조리법에서 변수를 다르게 취급하는 이유에 대한 답변이 없지만 여기에 제 수정 사항이 있습니다.

속성을 요리 책에서 가져 오는 방법에 약간의 변화가있어서 저를 괴롭게합니다. 제가 쉐프 솔로를 사용하고 있었기 때문에 역할을 지원하지 않았기 때문에 역할을 만들고 속성을 무시한 다음 기본 요리 책이라고했습니다.

이 모델은 내가 서버에서 작업 할 때 Chef를 개념화하는 방법과 더 밀접하게 작용하므로 올바른 솔루션입니다. 내가 한 다음

당신은 추가 변수 오버라이드 (override) 할 필요가 Vagrantfile

config.vm.provision "chef_solo" do |chef| 
    chef.cookbooks_path = "vendor/cookbooks" 
    chef.roles_path = "roles" 
    chef.data_bags_path = "data_bags" 
    chef.add_role "base" 
end 
3

를 통해 실행 목록에 역할을 추가 자료

name "base" 
description "The base role" 
run_list "recipe[base]" 
override_attributes "nginx" => 
    { 
    'install_method' => 'source', 
    'source' => {'version' => '1.5.3'} 
    } 

라는 역할을 만듭니다 prefix, url, sbin_pathdefault_configure_flags :

set['nginx']['version'] = "1.5.3" 
set['nginx']['source']['version'] = "1.5.3" 
# The Chef checksum of a binary is determined by: shasum -a 256 FILE_NAME 
set['nginx']['source']['checksum'] = "edcdf2030750b4eb1ba8cd79365c16a3e33e6136b7fdd8a1a7b4082397f4e92b" 
set['nginx']['source']['prefix'] = "/opt/nginx-#{node['nginx']['source']['version']}" 
set['nginx']['source']['url'] = "http://nginx.org/download/nginx-#{node['nginx']['source']['version']}.tar.gz" 
set['nginx']['source']['sbin_path'] = "#{node['nginx']['source']['prefix']}/sbin/nginx" 

set['nginx']['source']['default_configure_flags'] = [ 
    "--prefix=#{node['nginx']['source']['prefix']}", 
    "--conf-path=#{node['nginx']['dir']}/nginx.conf", 
    "--sbin-path=#{node['nginx']['source']['sbin_path']}" 
] 

이 변수는 다른 변수를 포함하고 아직 값에 의해 재정의되지 않은 값을 사용하여 설정되기 때문입니다.

래퍼 요리 책에서 이러한 추가 변수를 지정하면 예상 한 모든 업데이트 된 값을 사용하고 있는지 확인할 수 있습니다. default 값이 이미 Nginx의 요리 책에 설정되어 있기 때문에 그보다 정확하게 당신이 무엇을하고 있는지 설명하고 더 높은 attribute precedence을 가지고로

또한, 그것은 set 같은 (normal의 별칭)를 사용하는 것이 좋습니다.

+0

물론 가능합니다. 그러나 과잉으로 보인다.파생 된 변수가 파생 된 변수를 재정의했다고 인식하지 못하는 이유를 알고 싶습니다. – timsabat