요리사 클라이언트가 서버에서 요리 책을 업데이트하지 않음


9

요리사 요리 책 (아파치 2)이 있습니다. 한 노드에서 작동하지 않습니다. 그래서 조정하고 업데이트하려고하지만 노드가 새 버전을 다운로드하지 않는 것 같습니다. 나는 로컬 머신에서 요리사 서버에 모든 것을 업로드 할 수 있었고 knife upload ., 성공했고, 내가 변경 한 apache2 요리 책 비트를 업로드했다고 인쇄합니다.

chef-client노드에서 수동으로 (루트로) 실행할 때 서버에 연결하고 실행 목록을 얻는 등을 볼 수 있습니다. 그러나 레시피 파일 /var/cache/chef/cookbooks/apache2은 이전 파일입니다. 그리고 변경 사항이 없기 때문에 레시피가 실패합니다.

노드에서 요리사 클라이언트가 새로운 업데이트 된 버전의 apache2 요리 책을 사용하도록하려면 어떻게해야합니까? 요리 책에서 버전 번호를 충돌시켜야합니까 (이 작업을 수행하지 않은 경우)?

chef-client -l debug 산출:

[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)

나는 요리사가 처음이므로 초보자 실수를했을 수도 있습니다.


요리사-서버 웹 인터페이스로 이동하여 요리 책의 변경 사항이 있는지 확인하십시오.
Draco Ater

1
당신이 도망했는지 확인하십시오 knife cookbook upload <cookbook_name>. 그래도 문제가 해결되지 않으면 버전을 충돌시킨 다음 실행 knife cookbook list <cookbook_name>하여 제대로 업로드하고 있는지 확인하십시오. 또는 knife cookbook download(다른 디렉토리에서) 실행 하여 서버가 올바른 코드라고 생각하는 것을 풀다운하십시오.
Tejay Cardon 2016

답변:


6

내가 생각할 수있는 몇 가지가 있습니다.

  1. 업로드중인 요리 책 버전이 최신 버전인지 확인하십시오.

    요리 책 버전 관리의 일반적인 문제는 요리 책 버전 1.0.0을 로컬로 수정하고 업로드 할 수 있지만 Chef Server에 요리 책 버전 1.0.1이 이미 업로드되어 있다는 것입니다. 이 경우 Chef Clients는 일반적으로 최신 버전을 검색하며 (달리 언급되지 않는 한) 변경 사항은 로컬 캐시와 동기화되지 않습니다.

    Chef Server에서 다음의 모든 요리 책 버전을 확인할 수 있습니다. knife cookbook show apache2

    이것에 대한 한 가지 해결책은 언급 한 것입니다-Chef Server에있는 것보다 버전 번호를 늘리십시오 (예 : 1.0.2 및 업로드).

    또 다른 방법은 Chef 서버에서 다른 apache2 쿡북을 제거하고 원하는 것을 다시 업로드하는 것입니다. 버전 번호 업데이트가 필요하지 않으며 최종 결과로 Chef Server는 단일 apache2 요리 책을 갖게됩니다.

  2. 변경 사항이 실제로 Chef Server에 적용되는지 확인하십시오.

    knife cookbook show apache2 <cookbook version> recipes default.rb foo.erb라는 템플릿을 보려는 경우 버전, 경로 및 파일 이름 바꾸기 사용 :knife cookbook show apache2 0.1.0 templates foo.erb

    이 명령은 Chef Server에서 파일을 요청하고 터미널에 출력을 표시합니다. 변경 사항이를 통해 업로드되고 있는지 확인하는 간단한 방법 knife cookbook upload입니다.

이것 외에도 도움이되지 않으면 knife버전, chef-server버전, chef-client버전 및 디버그 로그 의 세부 정보를 추가하면 knife cookbook upload apache2 -VV디버깅에 도움이됩니다.


1
이 답변에 대해 대단히 감사합니다. 나는 그것을 할 수 있다는 것을 몰랐다. 어쨌든 production.rb 환경을 다시 업로드 한 후 새로운 요리사가 최신 앱 요리 책을 선택했습니다.
콜린 커틴

2

먼저 서버의 모든 요리 책 버전을 디버그 한 다음 클라이언트가 다운로드중인 요리 책 버전을 확인하십시오. 오래된 경우 서버에 업데이트 된 버전이 있는지 확인하십시오. 예인 경우 chef 서버 UI로 이동하여 env를 확인하십시오. 요리 책 제약 조건이 지정된 환경을 설정했을 수 있습니다. 저기 버전을 업데이트하면 다시 작동하기 시작합니다.


1

이것의 또 다른 원인은 모든 요리 책의 의존성이 요리사 서버에 존재하지 않기 때문일 수 있습니다. 지금 막이 문제에 부딪 쳤고 새 버전의 요리 책이 나타 knife cookbooks list났지만 클라이언트가 새 버전을 사용하지 않았습니다. 디버깅 후 Berkshelf 나 나이프가 요리 책에 대한 새로운 종속성을 업로드했음을 발견했습니다. 업로드 한 후 클라이언트는 최신 버전을 사용하기 시작했습니다.


나이프 요리 책 업로드 <cookbook_name>을 실행했는지 확인하십시오
Net Runner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.