将配置与WAR / EAR分开以进行Puppet部署
-
27-10-2019 - |
题
我们将许多Java Web应用程序部署到Weblogic和Jboss服务器。部署通常如下所示:
-
将代码和默认配置复制到应用程序服务器或Weblogic管理服务器上的登台目录中。
-
编辑属性文件以设置特定于环境的变量(IP地址,用户名等)
-
运行ant来创建ear / war,并将其放在适当的目录中。
-
启动服务
事实证明,使用Puppet作为我们的配置管理工具时,这是一组非常不友好的步骤。我们希望使用一个与Puppet的Package,File,Service trifecta更加相似的过程,但是在构建“ ear / war”之前必须配置属性会使此操作变得很困难,因为它需要额外的步骤才能在Pearpet上构建war / ear。填充属性后,主机。
是否有一种方法可以构建与环境无关的战争/战争,并保持外部配置,从而省去了额外的构建步骤?
有人专门使用Web应用程序和Puppet吗,您有什么建议吗?
解决方案
我对 tomcat 和.war webapps所做的工作是使用未压缩的war构建系统软件包,然后处理conf文件。我根本没有处理过Weblogic或JBoss,所以我不知道它如何处理未压缩的WAR内容。
1)构建一个包(RPM),在其中我完成所有.war构建工作,然后执行以下操作: 通用标签
(这样,解压缩后的.war文件就在软件包中,而其中没有实际的.war文件。使用tomcat时,它将留下该目录,特别是如果它没有写访问权限,因为该文件属于root)
2)人偶之类的东西: 通用标签
此特定程序包在8个目录中包含32个文件,我们正在对其进行修改或推出以对其进行配置。如果只是几个文件,我将使用几个简单的file{}
资源来管理那些文件,而不是递归的东西。
如果您不想构建系统类型的程序包,则可以将战争专用的file{}
资源放入备用目录,exec{"unzip ...": creates => '/path/to/unzipped/webapp;}
,并让file{}
资源进行配置需要Exec["unzip ..."]
。