If you are looking to install apache tomcat instances, consider using Ansible as a great way.
Ansible is an agentless automation tool that manages machines over the SSH protocol by default. Once installed, Ansible does not add a database, and there will be no daemons to start or keep running.
With Ansible, you can create an ansible playbook and use it to deploy dozens of tomcat in one go. In this tutorial, you will learn how to install apache tomcat using Ansible. Let’s get started.
Table of Content
- Prerequisites
- Building tomcat Ansible-playbook on the Ansible Controller
- Running Ansible-playbook on the Ansible Controller
- Tomcat files and Tomcat directories on a remote node
- Conclusion
Prerequisites
This post will be a step-by-step tutorial. If you’d like to follow along, be sure you have:
- An Ansible controller host. This tutorial will be using Ansible v2.9.18.
- In case it is not installed please refer: Install Ansible on Ubuntu Machine
- A remote Linux computer to test out the tomcat installation. This tutorial uses Ubuntu 20.04.3 LTS as the remote node.
- An inventory file and one or more hosts are configured to run Ansible commands and playbooks. The remote Linux computer is called webserver, and this tutorial uses an inventory group called web.
Ensure your remote machine IP address is inside /etc/ansible/hosts ( either one remote machine or define it as a group)
Building tomcat Ansible-playbook on the Ansible Controller
Ansible is an automation tool used for deploying applications and systems easily; it could be Cloud, Services, orchestration, etc. Ansible uses YAML Language to build playbooks which are finally used to deploy or configure the required change. To deploy tomcat, let’s move ahead and create the ansible-playbook.
- SSH or login into your any Linux machine.
- Create a file named my_playbook3.yml inside /etc/ansible folder and paste below code.
The below playbook contains all the tasks to install tomcat on the remote node. The first task is to update your system packages by using the apt command, further creating tomcat user and group. The next task is to install java, install tomcat, and create necessary folders and permissions for the tomcat directory.
---
- name: Install Apache Tomcat10 using ansible
hosts: webserver
remote_user: ubuntu
become: true
tasks:
- name: Update the System Packages
apt:
upgrade: yes
update_cache: yes
- name: Create a Tomcat User
user:
name: tomcat
- name: Create a Tomcat Group
group:
name: tomcat
- name: Install JAVA
apt:
name: default-jdk
state: present
- name: Create a Tomcat Directory
file:
path: /opt/tomcat10
owner: tomcat
group: tomcat
mode: 755
recurse: yes
- name: download & unarchive tomcat10
unarchive:
src: https://mirrors.estointernet.in/apache/tomcat/tomcat-10/v10.0.4/bin/apache-tomcat- 10.0.4.tar.gz
dest: /opt/tomcat10
remote_src: yes
extra_opts: [--strip-components=1]
- name: Change ownership of tomcat directory
file:
path: /opt/tomcat10
owner: tomcat
group: tomcat
mode: "u+rwx,g+rx,o=rx"
recurse: yes
state: directory
- name: Copy Tomcat service from local to remote
copy:
src: /etc/tomcat.service
dest: /etc/systemd/system/
mode: 0755
- name: Start and Enable Tomcat 10 on sever
systemd:
name: tomcat
state: started
daemon_reload: true
Running Ansible-playbook on the Ansible Controller
Earlier in the previous section, you created the ansible-playbook, which is great, but it is not doing much unless you deploy it. To deploy the playbook using the ansible-playbook command.
Assuming you are logged into Ansible controller:
- Now run the playbook using the below ansible-playbook command.
ansible-playbook my_playbook3.yml
As you can see below, all the tasks are successfully completed; if the status of TASK shows ok, that means the task was already completed; else, for changed status, Ansible performs the task on the remote node.

- Next, verify remote machine if Apache Tomcat is installed successfully and started use the below command.
systemctl status tomcat
service tomcat status

- Also you can verify by running process command.
ps -ef | grep tomcat
ps -aux | grep tomcat


Tomcat files and Tomcat directories on a remote node
Now that you have successfully installed the tomcat on the remote node and verified the tomcat service, it is equally important to check the tomcat files created and the purpose of each of them.
- Firstly all the tomcat files and tomcat directories are stored under <tomcat-installation-directory>/*.
Your installation directory is represented by environmental variable $CATALINA_HOME
- The tomcat directory and files should be owned by user tomcat
- The tomcat user should be member of tomcat group.

- <tomcat-installation-directory>/bin: This directory consists of startup and shutdown scripts (startup.sh and shutdown.sh) to run or stop the tomcat directly without using the tomcat service configured.

- <tomcat-installation-directory>/conf: This is very crucial directory where tomcat keeps all its configuration files.

- <tomcat-installation-directory>/logs: In case you get any errors while running your tomcat then you can look at your safeguard ie. logs , tomcat creates its own logs under this directory.

- <tomcat-installation-directory>/webapps: This is the directory where you place your code such as .war and run your applications. It is highly recommended to stop tomcat and then deploy your application inside this directory and then start tomcat.

Conclusion
In this tutorial, we covered in-depth how can you install Apache Tomcat 10 on the ubuntu 18.0 version using Ansible controller and finally discussed files and directories which are most important for any Apache tomcat admins and developers.
If you wish to run your application on lightweight and easily, Apache Tomcat is your friend.