카피 스트라 노에서 "역할"은 정확히 무엇입니까?


86

카피 스트라 노 레시피에서 "역할"의 목적과 기능은 무엇입니까? 샘플 레시피를 볼 때 종종 다음과 같은 내용이 표시됩니다.

role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db,  'somedomain.com', :primary => true

따라서 역할 은 기본적으로 Capistrano가 명령을 실행 하는 서버 인 것 같습니다 . 그렇다면 "호스트"또는 "서버"가 아닌 "역할"이라고하는 이유는 무엇입니까?

위의 예에서 역할 :app:web역할 의 차이점은 무엇 입니까?

뭐라고합니까 :primary => true옵션은 무엇입니까?

답변:


67

역할을 사용하면 특정 서버에만 적용되는 카피 스트라 노 작업을 작성할 수 있습니다. 이것은 실제로 다중 서버 배포에만 적용됩니다. "app", "web"및 "db"의 기본 역할도 내부적으로 사용되므로 존재 여부는 선택 사항이 아닙니다 (AFAIK).

제공 한 샘플에는 기능적 차이가 없습니다.

": primary => true"는 사용자 지정 작업에서 서버를 지정할 때 더욱 세분화 할 수있는 속성입니다.

다음은 작업 정의에있는 역할 사양의 예입니다.

task :migrate, :roles => :db, :only => { :primary => true } do
  # ...
end

보다 광범위한 설명 은 capistrano 웹 사이트 @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role 을 참조하십시오 .


2
또한 참고 : 귀하의 라인은 :only => { :primary => true }제 생각에 ... 또는 role질문 의 명령이 :master => true대신 사용해야 합니다. 이러한 속성은 완전히 자유 형식이라고 생각합니다.
docwhat

3

": primary => true"옵션은 데이터베이스 서버가 기본 서버임을 나타냅니다. 이는 예를 들어 MySQL과 함께 복제를 사용하려는 경우에 중요합니다. 자동 장애 조치에 사용할 수있는 또 다른 미러링 된 데이터베이스 서버를 만들 수 있습니다. 또한 모델 마이그레이션을 실행할 데이터베이스 서버를 결정하는데도 사용됩니다 (이러한 변경 사항은 장애 조치 서버에 복제되므로). 이 링크는 https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration 에서 좀 더 명확하게 설명합니다.

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