모두를 지배하는 한 요리사


10

요리사로보고 EC2 같은 표준 젠토 호스팅 옵션뿐만 아니라 환경에 모두 - 젠토 배포를 자동화 할 수 있습니다. 나는 구글을 둘러 보았고 수많은 레시피를 보았지만 아무도 정식으로 나를 공격하지 않습니다. 더 나은 / 최고의 특정 요리사 스크립트가 있습니까? 또한 이전에 PHP를 사용하여 요리사 배포를 수행 한 경우 처음 시작할 때 알고 싶은 것이 무엇입니까?


2
Ansible ( ansible.com/home )이 존재 한다는 것을 알고 싶습니다 .
리드 Blomquist

관심있는 다른 대안, saltstack.comdocker.com . 둘 다 유망 해 보이지만 나도 함께 일할 기회가 없었습니다.
beeplogic

1
나는 카피 스트라 노 - 재 실험을했습니다 : github.com/augustash/capistrano-ash
pzirkind

나는 Reid가 무언가에 있다고 생각합니다. Alan re : Ansible. 에이전트 (ssh + 키와 함께 작동)가 클라이언트에 설치 될 필요가 없으며, 선언적 시스템이므로 dem 등적이며 일반적으로 사용하면 "한 가지만하면됩니다. 요리사, 꼭두각시, 소금과 같은 더 강력한 시스템에 비해 유닉스와 비슷한 느낌을줍니다. 이 글을 처음 게시 한 이후로 잠시 동안 요리사와 일한 후 생각에 대한 업데이트가 있습니까?
Bryan 'BJ'Hoffpauir Jr.

답변:


6

하나의 크기에 맞는 모든 루틴을 갖는 것은 거의 불가능합니다. 에서 chef-client제공 한 호스트 목록에서 실행을 실행 하는 Bash 스크립트를 작성하는 데 성공했습니다 knife search. 절차는 다음과 같습니다.

Ubuntu 12.04 LTS의 오픈 소스 Chef Server 10.18.2

  1. 변수 초기화
  2. GitHub에서 최신 개정 해시를 얻으십시오. $branch
  3. HTTP 503 상태를 통한 경보를 방지하기 위해 가용성 모니터링 사용 안함
  4. 모든 웹 및 유틸리티 호스트를 유지 관리 모드로 전환
  5. 배포 유틸리티
    1. 마젠 토의 크론과 모든 Resque 작업자를 중지
    2. 파일 시스템 종속성 해결
    3. Chef가 정의 된 개정을 새 릴리스로 확인
    4. 마 젠토 의존성 해결 (패키지, 모듈, 파일 시스템, 권한)
    5. 자동화를위한 모든 cron 태스크 및 스크립트 업데이트
    6. 모든 모듈 (작곡가) 배포
    7. 캐시 지우기 n98-magerun.phar
    8. 다음으로 마이그레이션을 실행하십시오. n98-magerun.phar
    9. 마 젠토 크론 재 활성화
    10. Resque 근로자 시작
  6. 첫 번째 웹 호스트 배포
    1. 파일 시스템 종속성 해결
    2. Chef가 $revision새 릴리스로 정의 된 것을 확인합니다
    3. 마 젠토 의존성 해결
    4. 모든 마 젠토 모듈 배포
  7. New Relic에서 새로운 배치 표시
  8. 가용성 모니터링 서비스 사용
  9. 다른 모든 웹 호스트에 대한로드 밸런서 서비스 비활성화
  10. 웹 호스트에 계속 배포하여 순차적으로 온라인 상태로 만듭니다.
  11. 검색 호스트를위한 Chef 루틴 수행

출처 : https://gist.github.com/parhamr/6177160#file-2-deployment


4

이것이 sysadmin / devops 역할을 원하는 동안이 영역에 접근 방법입니다. 다음은 대부분 요리사가 아닌 일반적인 원칙입니다.

나는 그 당시에 더 많은 자원이 있다는 것을 알았 기 때문에 Puppet과 함께갔습니다.

나는 아파치, php5 등과 같은 것들에 사용할 수있는 다양한 사전 구축 모듈을 살펴 보았다. 그들 중 많은 것들이 내가 필요로하는 것보다 더 많은 것을하는 것처럼 보였고, 무슨 일이 있었는지 믿지 않는 플랫폼에 익숙하지 않은 것 같았다. 각 노드 유형에서 수행해야 할 작업을 식별하는 것이 더 간단해질 것이라고 결정했습니다.

팀의 로컬 개발 환경 (vargrant + virtual box)을 프로비저닝하여 프로세스를 시작했습니다. 각 서비스 / 구성 요소마다 php5, apache2, redis, mysql 등의 모듈을 만들었습니다.

개발 환경이 안정되고 작동하면 QA 환경을 구축하기 시작했습니다. 웹 서버, redis, varnish 등의 일반 노드 유형을 정의하여 dev와 동일한 모듈을 재사용했습니다. 이 작업이 완료되면 준비 및 프로덕션 필요 시작 및 실행에 최소한의 변경이 필요했습니다.

조리법 / 서식 파일을 작성하고 작성하면서 재사용 / 일반화 방법을 고려해야합니다. 배포판 / 프로젝트 / 환경간에 변경 될 수있는 경로 또는 사용자 / 그룹과 같은 것을 하드 코딩하지 마십시오. 일반화 된 접근 방식을보고 있기 때문에 큰 장애물이 * nix 배포판의 차이점을 처리 할 것입니다.

가장 중요한 것은 유지가 간단하다는 것입니다. 환경에서 가장 중요하고 시간 소모적 인 부분을 자동화 / 표준화합니다. 반복하고 진화하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.