Jboss 为傀儡部署将配置与WAR/EAR分离

Jboss 为傀儡部署将配置与WAR/EAR分离,jboss,weblogic,configuration-management,puppet,Jboss,Weblogic,Configuration Management,Puppet,我们在Weblogic和Jboss服务器上部署了大量Java web应用程序。部署通常如下所示: 将代码和默认配置复制到应用程序服务器或Weblogic管理服务器上的暂存目录 编辑属性文件以设置特定于环境的变量(IP地址、用户名等) 运行ant创建ear/war,并将其放到适当的目录中 启动服务 事实证明,将Puppet用作配置管理工具是一组非常不友好的步骤。我们更喜欢一个与Puppet的包、文件、服务trifecta更为相似的过程,但是在构建ear/war之前必须配置属性,这使得这很困难,因为

我们在Weblogic和Jboss服务器上部署了大量Java web应用程序。部署通常如下所示:

  • 将代码和默认配置复制到应用程序服务器或Weblogic管理服务器上的暂存目录

  • 编辑属性文件以设置特定于环境的变量(IP地址、用户名等)

  • 运行ant创建ear/war,并将其放到适当的目录中

  • 启动服务

  • 事实证明,将Puppet用作配置管理工具是一组非常不友好的步骤。我们更喜欢一个与Puppet的包、文件、服务trifecta更为相似的过程,但是在构建ear/war之前必须配置属性,这使得这很困难,因为在填充属性之后,在主机上构建war/ear需要额外的步骤

    有没有办法构建一个与环境无关的war/ear,并将配置保持在外部,从而删除额外的构建步骤


    有人专门使用过web应用程序和Puppet吗?你有什么建议吗?

    我使用tomcat和.war webapps所做的是使用解压缩的war构建一个系统包,然后处理conf文件。我没有太多处理Weblogic或JBoss,所以我不知道它如何处理解压的战争内容

    1) 构建一个包(RPM),我在其中执行所有的.war构建工作,然后类似于:

    mkdir -p %{buildroot}/var/lib/tomcat5/webapps/APP
    cd %{buildroot}/var/lib/tomcat5/webapps/APP
    unzip ../APP.war
    rm ../APP.war
    
    (这样解压后的.war文件在包中就没有实际的.war文件了。使用tomcat,它会将该目录单独保留,特别是当它因为文件属于root而没有写访问权限时)

    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{}
    资源来管理这些文件,而不是递归的东西

    如果你不想构建一个系统类型的包,你可以为war做一个
    文件{}
    资源到一个备用目录中,一个
    exec{“unzip…”:creates=>'/path/to/unzip/webapp;}
    并让
    文件{}
    资源配置需要
    exec[“unzip…”]