【问题标题】:Separating configs from WAR/EAR for Puppet deployments从 WAR/EAR 中分离配置以进行 Puppet 部署
【发布时间】:2011-12-02 09:58:57
【问题描述】:

我们将 Java Web 应用程序部署到 Weblogic 和 Jboss 服务器上。部署通常如下所示:

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

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

  3. 运行 ant 来创建 ear/war 并将其放到适当的目录中。

  4. 启动服务

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

有没有办法构建一个与环境无关的战争/耳朵,并将配置保持在外部,从而消除额外的构建步骤?

有没有人专门研究过 Web 应用程序和 Puppet,您有什么建议吗?

【问题讨论】:

    标签: jboss weblogic configuration-management puppet


    【解决方案1】:

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

    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 后,它将不理会该目录,特别是如果它没有写入权限,因为文件属于根目录)

    2) Puppet 有点像:

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

    如果您不想构建系统类型的包,您可以将 file{} 用于战争的资源放入备用目录中,exec{"unzip ...": creates => '/path/to/unzipped/webapp;} 并让 file{} 资源用于配置需要 Exec["unzip ..."] .

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      相关资源
      最近更新 更多