How to setup Tomcat V8 using chef

How to setup Tomcat V8 using chef


Purpose – To setup a node with Tomcat web container instance using chef

Step1: Generate a cookbook

[root@desktop1 cookbooks]# chef generate cookbook tomcat_v8
Generating cookbook tomcat_v8
– Ensuring correct cookbook file content
– Ensuring delivery configuration
– Ensuring correct delivery build cookbook content

Your cookbook is ready. Type `cd tomcat_v8` to enter it.

There are several commands you can run to get started locally developing and testing your cookbook.
Type `delivery local –help` to see a full list.

Why not start by writing a test? Tests for the default recipe are stored at:

test/smoke/default/default_test.rb

If you’d prefer to dive right in, the default recipe can be found at:

recipes/default.rb

Step2: Define the attributes to be used

[root@desktop1 tomcat_v8]# cat attributes/default.rb
#
# Cookbook Name:: tomcat_latest
# Attributes:: default
#
# Copyright 2013, Sudhir B
#
# Licensed under the Apache License, Version 2.0 (the “License”);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an “AS IS” BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

default[‘tomcat_v8’][‘tomcat_url’]=”http://archive.apache.org/dist/tomcat/tomcat-8/”
default[‘tomcat_v8’][‘tomcat_version’]=”8.5.15″
default[‘tomcat_v8’][‘tomcat_install_dir’]=”/opt/apache/tomcat”
default[‘tomcat_v8’][‘tomcat_user’]=”tomcat”
default[‘tomcat_v8’][‘tomcat_auto_start’]=”true”

Step3: Update the Berksfile to include the dependency cookbook and upload the cookbook to chef server
[root@desktop1 tomcat_v8]# cat Berksfile
source ‘https://supermarket.chef.io’
cookbook ‘java_se’, ‘~> 8.131.0’
metadata
[root@desktop1 tomcat_v8]# berks upload
Skipping java_se (8.131.0) (frozen)
Uploaded tomcat_v8 (1.5.0) to: ‘https://api.chef.io:443/organizations/<org_name>

Step4: Update the default.rb recipe as below

[root@desktop1 tomcat_v8]# cat recipes/default.rb
#
# Cookbook:: tomcat_v8
# Recipe:: default
#
# Copyright:: 2017, Sudhir B, All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the “License”);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an “AS IS” BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

tomcat_url=node[‘tomcat_v8’][‘tomcat_url’]
tomcat_version=node[‘tomcat_v8’][‘tomcat_version’]
tomcat_install_dir=node[‘tomcat_v8’][‘tomcat_install_dir’]
tomcat_user=node[‘tomcat_v8’][‘tomcat_user’]
tomcat_auto_start=node[‘tomcat_v8’][‘tomcat_auto_start’]

group “tomcat”

user “tomcat” do
        group “tomcat”
        system true
        shell “/bin/bash”
end

directory “#{tomcat_install_dir}” do
  owner ‘tomcat’
  group ‘tomcat’
  mode ‘0755’
  recursive true
  action :create
end

## Include the dependencies
include_recipe “java_se”

## Download the tomcat package
download_url=”#{tomcat_url}”+”v#{tomcat_version}”+”/bin/apache-tomcat-#{tomcat_version}.tar.gz”

script “Download Apache Tomcat version #{tomcat_version}” do
        interpreter “bash”
        user “#{tomcat_user}”
        cwd “/tmp”
        code <<-EOH
                wget “#{download_url}” -O “/tmp/apache-tomcat-#{tomcat_version}.tar.gz”
                #mkdir -p #{tomcat_install_dir}
        EOH
end

## Extract the package

script “Extracting the Apache Tomcat Package” do
        interpreter “bash”
        user “#{tomcat_user}”
        cwd “/tmp”
        code <<-EOH
                tar -zxvf /tmp/apache-tomcat-#{tomcat_version}.tar.gz -C #{tomcat_install_dir}
        EOH
end

## Move the unzipped package to /opt/apache/tomcat/apache-tomcat

script “Move the package” do
        interpreter “bash”
        user “#{tomcat_user}”
        cwd “/tmp”
        code <<-EOH
                if [[ ! -d /opt/apache/tomcat/apache-tomcat  ]] ; then
                        cd #{tomcat_install_dir} ; mv apache-tomcat-* apache-tomcat
                else
                        echo “Directory already exists”
                fi
        EOH
end

## Start the tomcat instance

script “Start the tomcat instance” do
        interpreter “bash”
        user “#{tomcat_user}”
        cwd “/tmp”
        code <<-EOH
                /opt/apache/tomcat/apache-tomcat/bin/startup.sh
        EOH
End

Step5: Install the Recipe on node using below knife command

[root@desktop1 tomcat_v8]# knife ssh ‘name:node_name’ ‘sudo chef-client’ –ssh-user user –ssh-password ‘password’ –attribute ipaddress

After running the above cookbook, your node should be setup with Tomcat installed at /opt/apache/tomcat/apache-tomcat and listening on HTTP port 8080. Test the tomcat instance using below URL

URL : http://<FQDN>:8080/

Hope you enjoyed reading this article. Thank you.