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>
我正在使用 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>