2014-12-03 86 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