2012-11-08 3 views
1

그래서요리사를 PaaS 배치 오케스트레이터로 사용하여 여러 개의 Drupal 사이트를 배포 할 수 있습니까? 각 노드에서</li> </ul> <p></p> <ul> <li>요리사 서버</li> <li>N 노드 :

"나는 전에이 바보 같은 질문을 사과 할"내 생각은 가지고있다 ; 나는 기본적인 역할을 정의 할 것이다. "NodeRole"처럼 아파치, PHP, mysql을 갖습니다.

그런 다음, 나는 완전한 드루팔 설치가 포함 된 여러 개의 가상 호스트를 배포 할 수 있기를 바랍니다.

그래서이 새로운 역할과 같은 몇 가지 특성을 갖습니다 :

"username" 
"password" 
"URL" 

'배포'이;

- Add an entry to apache virtual host configuration 
- Create a user account with provided password 
- Create a database user with provided password 
- Install drupal with the provided credentials 

어떻게 새 사이트를 배포 할 때마다 txt 파일을 만들지 않고도 '동적으로'이 작업을 수행 할 수 있습니다.

요리사 서버 API와 상호 작용하고 "deploy www.example.com john mypassword"와 같은 것을 말할 수 있습니까?

감사합니다.

+0

같은 당신은 요리사 솔루션을 설정하고 있는가? 당신이 원하는 것은 Aegir와 유사합니다. http://www.aegirproject.org/ –

+0

Aegir는 좋습니다; 하지만 좀 더 유연 해 지길 바래 ...나는 drupal 만 사용하지 않을 것이다. 드루팔 (Drupal)은 시작에 불과합니다. 질문이 명확하지 않으면 미안 해요. – Disco

답변

3

Chef는 고객이 구성을 요청할 때까지 사용하는 풀 모델입니다. 당신이 밀어 넣기를 원한다면 당신은 그렇게 할 수있는 다른 것을 주입해야 할 것입니다. 원하는 경우 서버에 접속하기 위해 클라이언트를 호출 할 수있는 명령 디스패처.

같은 일을 반복하고 싶다면 LWRP http://wiki.opscode.com/display/chef/Lightweight+Resources+and+Providers+(LWRP을 만드는 것이 가장 좋은 방법 일 수 있습니다. 그런 다음 당신이 가지고있는 변수를 코드로 넘겨 줄 수 있습니다. 그러면 코드는 X 번 재생할 필요가 없습니다.

각 설치마다 새로운 레시피를 작성하고 싶지 않은 경우, 속성 오브젝트에서 JSON 매쉬 캐 퍼빌 라이트를 사용하고 설치를 작성하는 오브젝트 콜렉션을 반복하십시오. 이 방법은 데이터 기반이지만 직접 실행 목록을 보는 사람들이보다 투명하게 볼 수 있기 때문에 개인별로 설치마다 다른 레시피를 사용하려고합니다.

속성 mash를 사용하는 예가 아래에 나와 있습니다. 당신은 databag로 이것을 달성 할 수 있습니다. 그런 다음 파일에서 JSON 표현을 업데이트하고 칼로 업로드하거나 UI에서 변경 작업을 수행 할 수 있습니다. 다시 나는 투명성 사이트 당 조리법을 추천하지만 코드/업데이트 runlists 등으로 이어질 것

이 나

"drupal_Sites" : { 
    "site1": { "username": "dave", "password" :"password123", "URL":"www.madeup.com" }, 
    "site2": { "username": "dave2", "password" :"password12", "URL":"www.madeup2.com" } 
} 

것은 그런 다음 레시피가 될 것 유사한처럼 조금 보이는 것입니다 귀하의 속성 JSON 객체 이

node["drupal_sites"].each do | site | 

Install = yourdrupalcookbook_InstallResource "#{site['URL']}" do 
    username site['username'] 
    password site['password'] 
    deploy site['URL'] 
    action :nothing 
    provider "yourdrupalcookbook_InstallProvider" 
end 

Install.run_action(:create) 

+0

이해하기가 어렵습니다. 나는 요리사가 당김 모델이라는 것을 알고 있습니다. 그래서 매번 서버에서 노드의 역할을 수정할 것입니다. 고객이 새로운 변화를 이끌어 낼 것입니까? 30 분 단위로 처리합니다. – Disco

+0

'json mash capabilites'란 무엇입니까? 간단한 예제를 제공 할 수 있습니까? – Disco

+0

풀 모델에 대한 의견은 요리사 - 서버 API에 연락하는 것만으로도 최선을 다할 수 있다고 생각했는데 다음 요리사가 실행하면 혼란에 빠지 겠지만 사과해야합니다. 요리사의 매시 (mash)는 기본적으로 Ruby의 해쉬입니다. 약간의 확장은 예제를 포함하여 대답을 업데이트합니다 – PatrickWalker