【问题标题】:Puppet: how to configure a Tomcat datasource using a puppet manifest?Puppet:如何使用 puppet 清单配置 Tomcat 数据源?
【发布时间】:2015-02-01 05:48:12
【问题描述】:

我制作了一个 puppet 类来在我的节点中安装 Apache Tomcat 7.55,但我不知道如何在其中配置数据源。

我的课的最后一步是部署一个应用程序:

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 模块。

谢谢!

【问题讨论】:

  • 尝试使用tomcat::config::server::connector
  • 嗨,乔丹。谢谢回复!我阅读了forge.puppetlabs.com/puppetlabs/… 的文档,但找不到适合配置为数据源的任何内容。另外,tomcat 的连接器不是 Catalina(tomcat 的 servlet 实现)和 Web 应用程序(如 HTTP 连接器)之间的中介吗?

标签: tomcat datasource puppet


【解决方案1】:

您可以使用带有 xml 镜头的 augeas 工具在 server.xml 中进行配置。不过,您需要使用 puppet 安装 augeas 模块。

【讨论】:

  • 嗨,user22520。感谢您的回复。自从您回复以来,我正在尝试您的方法,但最近几天其他问题需要我注意。一旦我得出结论,我会给你一个更好的反馈。
【解决方案2】:

您可以为 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

【讨论】:

  • 嗨,宝马!感谢您的回答。我正在评估 user22520 的解决方案,然后我会尝试你的解决方案,看看最简单的维护和发展。谢谢!
【解决方案3】:

这是一个示例配置

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',
        },
} 

【讨论】:

  • 您好 Aditya,请务必在发布之前格式化您的代码。现在已经修复了。
  • 这似乎与提出的问题(添加数据源)无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
相关资源
最近更新 更多