Ansible은 Hudson / Jenkins와 같은 CI 도구를 대체합니까?
최근 우리 회사에서는 배포 및 지속적 통합에 Ansible 을 사용하기로 결정했습니다 . 하지만 Ansible을 사용하기 시작했을 때 Maven으로 Java 프로젝트를 빌드하기위한 모듈이나 JUnit 테스트 또는 JMeter 테스트를 실행하기위한 모듈을 찾지 못했습니다.
따라서 저는 의심스러운 상태에 있습니다. Ansible을 잘못된 방식으로 사용하고있을 수 있습니다.
Jenkins를 보면 빌드, 테스트 실행, 배포와 같은 작업을 수행 할 수 있습니다. Hudson에서 빠진 것은 AWS와 같은 클라우드 환경에서 인스턴스를 생성 / 삭제하는 것입니다.
일반적으로 Ansible / Jenkins를 사용해야하는 목적은 무엇입니까? CI의 경우 Ansible과 Jenkins를 함께 사용해야합니까?
Ansible의 올바른 사용에 대해 조명 해주세요.
첫째, Jenkins와 Hudson은 기본적으로 동일한 프로젝트입니다. 나는 그것을 아래에서 Jenkins라고 부를 것이다. Hudson과 Jenkins 중에서 선택하는 방법을 참조하십시오 . , 2012 년 Hudson vs Jenkins , 그리고 사용자 관점에서 Jenkins와 Hudson의 가장 두드러진 차이점은 무엇입니까? 이상.
둘째, Ansible은 지속적인 통합 엔진이 아닙니다. 일반적으로 git repos를 폴링하지 않고 정상적인 방식으로 실패한 빌드를 실행합니다.
Jenkins는 언제 사용할 수 있습니까?
머신 환경 및 배포 프로세스가 매우 간단 하다면 (예 : Heroku 또는 팀 외부에서 구성된 iron) Jenkins로 충분할 수 있습니다. 최종 빌드 단계 (또는 연결 단계)로 배포를 수행하는 사용자 지정 스크립트를 작성할 수 있습니다.
Ansible은 언제 사용할 수 있습니까?
빌드 / 테스트 할 필요없이 "배포"만하면되는 경우 Ansible이면 충분할 수 있습니다. 예를 들어 명령 줄에서 또는 Ansible Tower를 사용하여 배포를 실행할 수 있습니다. 소규모 프로젝트, 정적 사이트 등에 적합합니다.
어떻게 함께 작동합니까?
좋은 조합은 Jenkins를 사용하여 아티팩트를 빌드, 테스트 및 저장하는 것입니다. Ansible 또는 Ansible Tower를 호출하는 단계를 추가하여 실제 배포 프로세스를 처리합니다. 이를 통해 Ansible은 머신 구성 을 처리 하고 Jenkins가 CI 프로세스를 처리 할 수 있습니다.
Jenkins의 대안은 무엇입니까?
Jenkins 대신 Thoughtworks Go (Go the language와 혼동하지 말 것)를 강력히 추천 합니다. 기타에는 CruiseControl, TravisCI 및 Integrity가 포함됩니다.
Ansible은 "미려한 SSH 루프"일뿐입니다. CI는 실행중인 소프트웨어 일뿐만 아니라 성공 및 실패를 처리하는 방법, 알림을받는 사람, 변경 사항이 대상 버전 제어에 병합되는 방법에 대한 전체 프로세스입니다.
소프트웨어에만 초점을 맞추면 CI는 코드 변경에 의해 트리거되는 반응 형 스케줄러이며 "단계"의 일반적인 빌드-검증-출시-배포 시퀀스를 트리거합니다.
따라서 소프트웨어와 관련하여 추가 "설탕"이없는 Ansible은 작업을 실행하기위한 툴킷 일뿐입니다. 바로 그 단계 일 수 있지만 CI는 아닙니다. Ansible (타워가없는)에는 이러한 반응성이 전혀 없습니다.
Ansible과 CI를 결혼하고 싶다면 그렇게 할 수 있습니다.
Ansible tower는 매우 Ansible 지향적 인 스케줄러이지만 CI 소프트웨어가 필요한 경우 반드시 필요하지는 않다고 생각합니다. 쉘 스크립트를 실행할 수있는 모든 CI 앱은 Ansible 플레이 북을 시작할 수 있습니다.
그러나 Ansible tower와 달리 CI 도구는 모든 테스트 프레임 워크의 테스트 보고서를 표시하고 알림을 트리거하는 등의 기능을 알고 있습니다.
Ansible 타워는 많은 그룹이 Ansible 코드를 터치하는 복잡한 환경에서 의미가 있습니다. 사실 저는 비용을 지불해야하는 실제 이유를 보지 못했습니다. 그러나 관리자가 웹 인터페이스를 좋아한다면 어떤 것도 "다른 사람이 사용하는"논리를 견딜 수 없습니다.
나는 Ansible 타워의 개념이 꼭두각시 기업에 대한 반응이라고 생각합니다.
:)
'Program Tip' 카테고리의 다른 글
예외가 특정 유형인지 확인하는 방법 (0) | 2020.11.04 |
---|---|
restTemplate을 사용하여 인증 헤더와 함께 GET 요청 보내기 (0) | 2020.11.04 |
원자에서`git commit`과`git push`를 어떻게 실행할 수 있습니까? (0) | 2020.11.04 |
단 하나의 명령문으로 Python 목록에서 여러 항목 제거 (0) | 2020.11.04 |
bash 변수를 jq select에 전달 (0) | 2020.11.04 |