tomcat 带有 puppet 的数据库连接字符串(aco/tomcat 模块)

tomcat database connection string with puppet (aco/tomcat module)

我正在使用 aco/tomcat 模块和这个 .pp:

class somevariable::base {

class { '::tomcat':
    install_from         => 'package',
    package_ensure       => 'latest',
    systemd_service_type => undef,
    service_ensure       => 'stopped',
    service_enable       => false,
  }

  $mydefaults = {
    admin_webapps        => true,
    create_default_admin => true,
    java_opts            => ['-server', '-Xmx1024m', '-Xms256m']
  }

  $myinstances = hiera('somevariable::base::instances')
  create_resources('::tomcat::instance', $myinstances, $mydefaults)

  $mywars = hiera('somevariable::app::wars', {})
  create_resources('file', $mywars)

}

我正在设置实例并像这样使用 hiera 部署战争:

variable::base::instances:
  instance1:
    server_control_port :  '8001'
    http_port           :  '8011'
    ajp_port            :  '8111'
    ajp_params          :  
        tomcatAuthentication : 'false'
    manage_firewall     :  true
  instance2:
    server_control_port :  '8002'
    http_port           :  '8022'
    ajp_port            :  '8222'
    manage_firewall     :  true
variable::app::wars:
   instance1_app:
     path:                 '/var/lib/tomcats/instance1/webapps/sample.war'
     owner:                tomcat
     group:                root
     source:               '/usr/local/src/sample.war'

(我希望这对搜索 aco/tomcat 示例的人也有帮助)

如何编写 context definitions 以通过 hiera 为每个实例设置连接字符串实例?

我还尝试在 tomcat 上下文(文件 context.xml)上设置我的数据库连接但没有成功,所以我最终决定复制每个应用程序 xml 文件方式:

在我的主清单上 site.pp

node default {

    include stdlib
    include java

    # Install tomcat and configure it for my application
    class { 'tomcat':
      install_from         => 'package',
      package_ensure       => 'latest',
      service_ensure       => 'running',
      service_enable       => true,
      tomcat_native        => true,
      manage_firewall      => false,
    }

    class {'myapp_tomcat': }
}

我使用这些文件创建了名为 myapp_tomcat 的自定义模块:

modules/myapp_tomcat/manifests/init.pp

class myapp_tomcat {

    file { '/var/lib/tomcat8/conf/Catalina/localhost/Myapp.xml':
      source => 'puppet:///modules/myapp_tomcat/Myapp.xml',
      owner   => 'root',
      group   => 'root',
      mode    => '0644',
      require => Service['tomcat8'],
    }

}

modules/myapp_tomcat/files/Myapp.xml

<?xml version='1.0' encoding='utf-8'?>

<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <Resource name="jdbc/MyappDS" auth="Container" type="javax.sql.DataSource"
        maxTotal="50" maxIdle="20" maxWaitMillis="10000"
        username="dbuser" password="dbpassword"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://localhost:5432/mydbname"/>

</Context>