2011-12-02 5 views
4

우리는 Java 웹 응용 프로그램을 Weblogic 및 Jboss 서버에 많이 배포합니다. 종종 배포는 다음과 같습니다퍼핏 배포를 위해 WAR/EAR에서 configs 분리

  1. 복사 코드와 기본 CONFIGS을 응용 프로그램 서버 또는 웹 로직 관리 서버에서 스테이징 디렉토리에. 속성 파일

  2. 편집 귀/전쟁을 만들고 해당 디렉토리에 드롭 환경 고유의 변수 (IP 주소, 사용자 이름 등)

  3. 실행 개미를 설정합니다.

  4. 서비스 시작

이것은 우리의 형상 관리 도구로 꼭두각시 사용 단계의 매우 쌀쌀 세트 것으로 입증되었습니다. Puppet의 Package, File, Service trifecta와 훨씬 더 유사한 프로세스를 선호하지만, 귀/전쟁을 구축하기 전에 속성을 구성해야하므로이 작업이 어려워집니다. 호스트에 등록하십시오.

환경에 독립적 인 전쟁/귀를 구축하고 추가 구성 단계를 생략하여 구성을 외부에 유지할 수있는 방법이 있습니까?

웹 응용 프로그램 및 퍼핏과 관련하여 특별히 작업 한 사람이 있으며 권장 사항이 있습니까?

답변

4

tomcat 및 .war webapps로 수행 한 작업은 압축 해제 된 전쟁으로 시스템 패키지를 만든 다음 conf 파일을 처리합니다. Weblogic을 많이 다루지 않았거나 JBoss를 전혀 다루지 않았기 때문에 압축되지 않은 WAR에 대한 처리 방법을 모르겠습니다.

1) 나는 모든 .WAR 건물 물건을 할 패키지 (RPM)를 구축 한 후 뭔가 같은 :

mkdir -p %{buildroot}/var/lib/tomcat5/webapps/APP 
cd %{buildroot}/var/lib/tomcat5/webapps/APP 
unzip ../APP.war 
rm ../APP.war 

(수 있도록 압축 해제 .war 파일은 실제 .WAR로 패키지에 . 파일이 루트에 속해 있기 때문에

2) 인형 물건 다소 같은) 쓰기 액세스 권한이없는 경우 특히, 그 다음 혼자 디렉토리를 떠나 바람둥이로 거기에 파일 :

package { 
    "tomcat5": 
    require => Package["java-1.6.0-sun"], 
    ensure => installed; 
    "java-1.6.0-sun": 
    ensure => installed; 
    "APP": 
    ensure => installed, 
    notify => Service["tomcat5"], 
    require => Package["java-1.6.0-sun"]; 
} 

file { 
    "/usr/share/tomcat5/webapps/APP": 
    source => [ "puppet:///MODULE/APP" ], 
    ensure => directory, 
    ignore => [ 'CVS', '.git', '.svn', '*~' ], # ignore revision control and backup files 
    purge => false, # leaves other stuff alone 
    replace => true, # replaces stock files with ours 
    recurse => true, # gets everything recursively 
    require => Package[APP], # install package first 
    notify => Service[tomcat5]; # restart tomcat after 
} 

이 특정 패키지는 8 개의 디렉토리에 32 개의 파일을 가지고 있습니다. 단지 몇 개의 파일이라면, 재귀적인 것들 대신에 그 파일들을 관리하기 위해 두 개의 간단한 file{} 리소스를 사용할 것입니다. 당신이 시스템 유형 패키지를 빌드하고 싶지 않은 경우

, 당신은 대체 디렉토리 내로 exec{"unzip ...": creates => '/path/to/unzipped/webapp;}을 전쟁을위한 file{} 자원을하고 file{} 자원 구성에 대한 Exec["unzip ..."]을 필요로있을 수 있습니다.