salt.modules.tomcat

Support for Tomcat

This module uses the manager webapp to manage Apache tomcat webapps. If the manager webapp is not configured some of the functions won't work.

configuration
  • Java bin path should be in default path

  • If ipv6 is enabled make sure you permit manager access to ipv6 interface "0:0:0:0:0:0:0:1"

  • If you are using tomcat.tar.gz it has to be installed or symlinked under /opt, preferably using name tomcat

  • "tomcat.signal start/stop" works but it does not use the startup scripts

The following grains/pillar should be set:

tomcat-manager:
  user: <username>
  passwd: <password>

or the old format:

tomcat-manager.user: <username>
tomcat-manager.passwd: <password>

Also configure a user in the conf/tomcat-users.xml file:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
    <role rolename="manager-script"/>
    <user username="tomcat" password="tomcat" roles="manager-script"/>
</tomcat-users>

Note

salt.modules.tomcat.deploy_war(war, context, force='no', url='http://localhost:8080/manager', saltenv='base', timeout=180, temp_war_location=None, version=True)

Deploy a WAR file

war

absolute path to WAR file (should be accessible by the user running tomcat) or a path supported by the salt.modules.cp.get_file function

context

the context path to deploy

forceFalse

set True to deploy the webapp even one is deployed in the context

urlhttp://localhost:8080/manager

the URL of the server manager webapp

saltenvbase

the environment for WAR file in used by salt.modules.cp.get_url function

timeout180

timeout for HTTP request

temp_war_locationNone

use another location to temporarily copy to war file by default the system's temp directory is used

version''

Specify the war version. If this argument is provided, it overrides the version encoded in the war file name, if one is present.

Examples:

salt '*' tomcat.deploy_war salt://salt-2015.8.6.war version=2015.08.r6

New in version 2015.8.6.

CLI Examples:

cp module

salt '*' tomcat.deploy_war salt://application.war /api
salt '*' tomcat.deploy_war salt://application.war /api no
salt '*' tomcat.deploy_war salt://application.war /api yes http://localhost:8080/manager

minion local file system

salt '*' tomcat.deploy_war /tmp/application.war /api
salt '*' tomcat.deploy_war /tmp/application.war /api no
salt '*' tomcat.deploy_war /tmp/application.war /api yes http://localhost:8080/manager
salt.modules.tomcat.extract_war_version(war)

Extract the version from the war file name. There does not seem to be a standard for encoding the version into the war file name

Examples:

/path/salt-2015.8.6.war -> 2015.8.6
/path/V6R2013xD5.war -> None
salt.modules.tomcat.fullversion()

Return all server information from catalina.sh version

CLI Example:

salt '*' tomcat.fullversion
salt.modules.tomcat.leaks(url='http://localhost:8080/manager', timeout=180)

Find memory leaks in tomcat

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.leaks
salt.modules.tomcat.ls(url='http://localhost:8080/manager', timeout=180)

list all the deployed webapps

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.ls
salt '*' tomcat.ls http://localhost:8080/manager
salt.modules.tomcat.passwd(passwd, user='', alg='sha1', realm=None)

This function replaces the $CATALINA_HOME/bin/digest.sh script convert a clear-text password to the $CATALINA_BASE/conf/tomcat-users.xml format

CLI Examples:

salt '*' tomcat.passwd secret
salt '*' tomcat.passwd secret tomcat sha1
salt '*' tomcat.passwd secret tomcat sha1 'Protected Realm'
salt.modules.tomcat.reload_(app, url='http://localhost:8080/manager', timeout=180)

Reload the webapp

app

the webapp context path

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.reload /jenkins
salt '*' tomcat.reload /jenkins http://localhost:8080/manager
salt.modules.tomcat.serverinfo(url='http://localhost:8080/manager', timeout=180)

return details about the server

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.serverinfo
salt '*' tomcat.serverinfo http://localhost:8080/manager
salt.modules.tomcat.sessions(app, url='http://localhost:8080/manager', timeout=180)

return the status of the webapp sessions

app

the webapp context path

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.sessions /jenkins
salt '*' tomcat.sessions /jenkins http://localhost:8080/manager
salt.modules.tomcat.signal(signal=None)

Signals catalina to start, stop, securestart, forcestop.

CLI Example:

salt '*' tomcat.signal start
salt.modules.tomcat.start(app, url='http://localhost:8080/manager', timeout=180)

Start the webapp

app

the webapp context path

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout

timeout for HTTP request

CLI Examples:

salt '*' tomcat.start /jenkins
salt '*' tomcat.start /jenkins http://localhost:8080/manager
salt.modules.tomcat.status(url='http://localhost:8080/manager', timeout=180)

Used to test if the tomcat manager is up

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.status
salt '*' tomcat.status http://localhost:8080/manager
salt.modules.tomcat.status_webapp(app, url='http://localhost:8080/manager', timeout=180)

return the status of the webapp (stopped | running | missing)

app

the webapp context path

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.status_webapp /jenkins
salt '*' tomcat.status_webapp /jenkins http://localhost:8080/manager
salt.modules.tomcat.stop(app, url='http://localhost:8080/manager', timeout=180)

Stop the webapp

app

the webapp context path

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.stop /jenkins
salt '*' tomcat.stop /jenkins http://localhost:8080/manager
salt.modules.tomcat.undeploy(app, url='http://localhost:8080/manager', timeout=180)

Undeploy a webapp

app

the webapp context path

urlhttp://localhost:8080/manager

the URL of the server manager webapp

timeout180

timeout for HTTP request

CLI Examples:

salt '*' tomcat.undeploy /jenkins
salt '*' tomcat.undeploy /jenkins http://localhost:8080/manager
salt.modules.tomcat.version()

Return server version from catalina.sh version

CLI Example:

salt '*' tomcat.version