2014-12-03 83 views
2

我做了一个puppet类来在我的节点中安装Apache Tomcat 7.55,但我不知道如何在其中配置数据源。Puppet:如何使用puppet清单配置Tomcat数据源?

我班的最后一步是将应用程序部署:

tomcat::war { 'my.war': 
    catalina_base => '/opt/apache-tomcat/tomcat_7_0_55', 
    war_source => '/etc/puppet/resources/my.war', 
    } 

这一步后,我需要配置以下数据源在conf/server.xml文件:

<Context path="/my-app" docBase="my-app" debug="5" reloadable="true" crossContext="true"> 
       <Resource name="jdbc/my-app-db" auth="Container" 
          type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="5" 
          username="xxx" password="yyy" 
          driverClassName="com.mysql.jdbc.Driver" 
          url="jdbc:mysql://<host>:3306/<database>?zeroDateTimeBehavior=convertToNull"/> 
</Context> 

如何我可以通过Puppet来做到吗?我正在使用puppetlabs-tomcat模块。

谢谢!

+0

尝试使用'tomcat :: config :: server :: connector'。 – jordanm 2014-12-03 15:36:07

+0

嗨,约旦。谢谢回复!我阅读了https://forge.puppetlabs.com/puppetlabs/tomcat#tomcatconfigserverconnector上的文档,但找不到适合配置为数据源的任何内容。另外,不是tomcat的连接器是Catalina(tomcat的servlet实现)和Web应用程序(如HTTP连接器)之间的中介吗? – 2014-12-03 16:19:10

回答

4

您可以创建server.xml文件的模板,并设置文件类型如下

$mysql_username = xxx 
$mysql_password = yyy 
$mysql_server = zzz 

file { "${install_path}/conf/server.xml" : 
    ensure => present, 
    content => template('tomcat/server.xml.erb'), 
    owner => 'tomcat', 
    group => 'tomcat, 
    mode => '0644', 
    notify => 'Class[tomcat::service]', 
} 

tomcat/template/server.xml.erb应包括的内容为

.... blabla 

<Context path="/my-app" docBase="my-app" debug="5" reloadable="true" crossContext="true"> 
       <Resource name="jdbc/my-app-db" auth="Container" 
          type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="5" 
          username="<%= @mysql_username %>" password="<%= @mysql_password %>" 
          driverClassName="com.mysql.jdbc.Driver" 
          url="jdbc:mysql://<%= @mysql_server %>:3306/<database>?zeroDateTimeBehavior=convertToNull"/> 
</Context> 

.... blabla 
+0

嗨,宝马!感谢您的回答。我正在评估user22520的解决方案,之后我会试试你的,看看最简单的解决方案和发展。谢谢! – 2014-12-08 15:45:52

2

您可以使用带有xml镜头的augeas工具在server.xml中配置此内容。你需要安装augeas模块和puppet。

+0

嗨,user22520。感谢您的回复。自你回答以来,我正在尝试你的方法,但其他问题在最后几天要求我注意。只要我得出结论,我会给你一个更好的反馈。 – 2014-12-08 15:43:08

0

下面是一个例子配置

tomcat::config::server::context {'alfresco.war': 
doc_base => 'alfresco.war', 
context_ensure => present, 
catalina_base => '/var/lib/tomcat7/alfresco.war', 
parent_service  => 'Catalina', 
parent_engine   => 'Catalina', 
parent_host   => 'localhost', 
server_config   => '/etc/tomcat7/server.xml', 
additional_attributes => { 
      'path' => '/alfresco', 
     }, 
} 
+0

嗨Aditya,请务必格式化您的代码,然后再发布它。现在已经修好了。 – nick 2015-07-29 23:45:59

+0

这似乎并不涉及问题(添加数据源)。 – eis 2015-10-03 07:06:01