나는 Red Hat이 포함된 서버 세트와 영구적으로 개발 중인 내부 소프트웨어(구성 등을 포함한 많은 파일로 구성됨)를 보유하고 있습니다.
서버 유형은 다양합니다.
- 개발하다
- 시험
- 사후 테스트
- 생산
범주당 최대 10개의 서버가 있지만 각 서버는 독립적으로 작동하며 다른 서버에 의존하지 않습니다. 또한 각 스트림에는 cvs 저장소에 태그가 지정된 작은 Subversion이 있을 수 있습니다. 따라서 모든 테스트 서버에 대한 Testing.rpm과 모든 프로덕션에 대한 prod.rpm을 구축할 수는 없습니다.
어쨌든 이를 수행하는 여러 가지 방법을 볼 수 있습니다.
- 자신만의 rpm 저장소를 만들고, 각 서버 유형과 해당 하위 버전에 대한 rpm 패키지 세트를 자동으로 빌드하고, cron을 사용하여 패키지를 업데이트하세요.
- 이를 수행하려면 각 서버에서 자체 구성이 포함된 쉘 스크립트를 사용하십시오.
- 수동으로 업데이트하세요 :)
어느 것이 더 낫습니까? 아니면 모두 완전히 잘못된 것이며 다른 방법이 있습니까? :)
답변1
고려해야 할 다양한 사항이 있습니다:
- Jenkins, Buildbot 등과 같은 지속적인 통합 소프트웨어를 사용하여 소프트웨어 구축을 시작하세요.
- 단계에 대한 전용 리포지토리 만들기 - 귀하의 의견에 따르면 최소한 개발 단계 배포, CI 도구를 통한 테스트 단계 및 자동화된 업데이트를 통한 후속 단계에 도움이 될 수 있습니다.
- 다음과 같은 것을 사용하십시오우주 유영또는 무인 업그레이드 또는 유사한 도구를 사용하여 시스템을 최신 상태로 유지하세요. 수동 cron 스크립트를 사용하거나 시스템에 로그인하지 마십시오. Spacewalk 대신 puppet을 사용하여 최신 버전의 패키지가 설치되었는지 확인할 수도 있습니다.
- 구성 및 패키지 사양을 보려면 puppet/chef/...를 사용하세요. 예를 들어, puppet을 사용하여 최신 패키지 버전을 설치하도록 지정하거나 모든 테스트 서버에 특정 저장소를 추가하는 등의 작업을 수행할 수 있습니다.
가장 중요한 것은 가능한 한 모든 것을 자동화하는 것입니다. puppet이나 Chef와 같은 구성 관리 시스템을 사용해야 합니다. 이는 새로운 시스템의 배포를 단순화하고 자동화합니다. 예를 들어 puppet을 한 번만 실행하면 서버가 프로덕션 시스템처럼 설정됩니다.