Chef :14

DevOps Classroom Series – 27/Jan/2021

Automating tomcat contd..

  • Now we need to create a file in the location /etc/systemd/system/tomcat.service with the following contents
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

  • This file has variable data (username, group, JAVA_HOME), so this is dynamic file. If this file is static we would have use (chef generate file) and used cookbook_file resource to copy the file
  • To create dynamic files in chef we have templates Refer Here for templates guide and Refer Here for template resources
  • Now lets generate a template Preview
  • Refer Here for the changeset and perform kitchen converge Preview
  • Lets look at service file Preview
  • Now lets browse to tomcat web page Preview
  • Now lets create a template for tomcat-users.xml and also create context.xml file and do the convergence. Refer Here for the changeset
  • Now verify if the host manager and manager app are accessible by providing username and passwords Preview
  • Now as a last step lets deploy a sample java application from Refer Here into /opt/tomcat/webapps/gameoflife.war
  • Refer Here for the changeset
  • Exercise: Make this cookbook work on redhat or centos