2013-09-03 3 views
1

저는 요리사 솔로와 함께 역할을하고 있습니다 (11.4.4 및 11.6.0). 조금 혼란스러워.요리사 솔로 - Ruby DSL 또는 JSON의 역할 데이터?

요리사 솔로 실행의 경우 역할이 Ruby 또는 JSON으로 작성되어야합니까?

공식 문서 : About Roles에 따라 역할을 도메인 별 Ruby (DSL) 파일 또는 JSON 데이터로 저장할 수 있습니다.

참고 : chef-client은 Ruby for Roles를 사용합니다.이 파일을 Chef Server에 업로드하면 JSON으로 변환됩니다. chef-repo가 ​​새로 고쳐질 때마다 도메인 별 Ruby 파일의 내용이 JSON으로 다시 컴파일되어 서버에 다시 업로드됩니다.

요구 사항은 서버없이 솔로 모드에서 요리사를 실행하는 것입니다 및 역할이 필요한 경우 내 질문은, 역할은 우리가 JSON에 루비를 변환하는 서버가없는 (루비 또는 JSON에 작성해야한다

)?

제 생각에는 후자입니다. 누구든지 올바른 대답을 알고 있습니까?

BTW : 역할 파일에 루비와 JSON을 혼합 내가 본 사람 ...

아래 rbenv.rb의 루비 DSL 동등한은 무엇입니까

?

예를 들어 우분투에 rbenv를 설치하려면 rbenv + ruby-build 개의 요리 책을 실행하십시오. 예상대로

rbenv.json

{ 
    "run_list": ["role[rbenv]"] 
} 

역할/rbenv.rb

name "rbenv" 
description "rbenv + ruby-build" 
run_list(
    "recipe[rbenv]", 
    "recipe[ruby_build]" 
) 
override_attributes(
    :rbenv => { 
    :git_repository => "https://github.com/sstephenson/rbenv.git" 
    }, 
    :ruby_build => { 
    :git_repository => "https://github.com/sstephenson/ruby-build.git" 
    } 
) 

요리사 솔로 chef-solo -c solo.rb -j rbenv.json -l debug 작업을 실행합니다. 이것은 방화벽 뒤에서 HTTPS를 통해 복제를 수행하기 때문에 가능합니다. (대신 HTTPS의 자식 URL을 통해 복제) 루비 DSL의 여전히 기본 속성을 사용하기 때문에 작동하지 않았다

name "rbenv" 
description "rbenv + ruby-build" 
run_list "recipe[rbenv]", "recipe[ruby_build]" 
# default_attributes ":rbenv" => {":install_prefix" => "/opt"} 
override_attributes ":rbenv" => {":git_repository" => "https://github.com/sstephenson/rbenv.git"}, ":ruby_build" => {":git_repository" => "https://github.com/sstephenson/ruby-build.git"} 

이하와 같은 역할 rbenv.rb의 버전을 사용하지만

.

나는 내가 DSL 코드에서 몇 가지 실수를했다 그래서 대부분 루비에, 나는 하나의 단순한 이유로 가능한 JSON 형식을 사용하는 것을 선호 ;-)

* git[/opt/rbenv] action sync[2013-09-03T03:44:53+00:00] INFO: Processing git[/opt/rbenv] action sync (rbenv::default line 91) 
[2013-09-03T03:44:53+00:00] DEBUG: git[/opt/rbenv] finding current git revision 
[2013-09-03T03:44:53+00:00] DEBUG: git[/opt/rbenv] resolving remote reference 

================================================================================ 
Error executing action `sync` on resource 'git[/opt/rbenv]' 
================================================================================ 


Mixlib::ShellOut::ShellCommandFailed 
------------------------------------ 
Expected process to exit with [0], but received '128' 
---- Begin output of git ls-remote "git://github.com/sstephenson/rbenv.git" master* ---- 
STDOUT: 
STDERR: fatal: unable to connect to github.com: 
github.com[0: 192.30.252.128]: errno=Connection timed out 
---- End output of git ls-remote "git://github.com/sstephenson/rbenv.git" master* ---- 
Ran git ls-remote "git://github.com/sstephenson/rbenv.git" master* returned 128 

답변

6

도와주세요 새로운 오전 - 그것은 구문 분석을 쉽게 스크립트로 확인하십시오. ,

  1. 쉽게 후크를 커밋 사전 자식에 구문 검사를 수행 할 파일이 루비에있을 때 할 일이 많이 힘들어 무언가 : 모든 요리사 데이터를 JSON 형식 인 경우 여기에 당신이 할 수있는 세 가지가 있습니다 DSL 형식.
  2. 데이터 백 항목의 키와 값을 확인합니다. 이는 유효하지 않거나 무의미한 데이터 백 항목을 프로덕션에 배포하지 않는지 확인하는 데 유용 할 수 있습니다.
  3. git이있는 서버의 객체 값과 약간의 추가 작업 (사전의 키 순서를 고려해야 함)을 비교하십시오. 여기서 --format json 인수가 유용합니다.
+0

의견을 보내 주셔서 감사합니다 .-) BTW : 보푸라기가 보푸라기 도구로 사용합니까? –

+1

예,하지만 셰프 요리 책에 체크인하는 것은 아닙니다. 젠킨스 (Jenkins) 직무를 수행하고 가끔 출력물을 검사합니다. –

+0

차가움. 최첨단 DevOps (연속 통합/배달) 도구 체인 LoL을 사용하고있는 것처럼 보입니다. –