vm/chef/cookbooks/tomcat/recipes/default.rb (94 lines of code) (raw):

# Copyright 2024 Google LLC # # 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. # # Reference: https://tomcat.apache.org/tomcat-10.0-doc/index.html # Reference: https://www.mkyong.com/tomcat/tomcat-default-administrator-password/ include_recipe 'c2d-config' include_recipe 'c2d-config::create-self-signed-certificate' include_recipe 'apache2' include_recipe 'apache2::mod-ssl' include_recipe 'apache2::mod-rewrite' include_recipe 'apache2::mod-proxy_http' include_recipe 'apache2::rm-index' include_recipe 'apache2::security-config' include_recipe 'openjdk11' include_recipe 'tomcat::ospo' apt_update do action :update end package 'xmlstarlet' do action :install end # Create tomcat user. user node['tomcat']['user'] do home '/home/tomcat' shell '/bin/bash' action :create manage_home true end # Create tomcat home directory. directory '/opt/tomcat' do owner 'tomcat' group 'tomcat' mode '0755' action :create end # Assign permissions for home directory. directory node['tomcat']['app']['install_dir'] do owner node['tomcat']['user'] group node['tomcat']['user'] mode '0755' action :create recursive true end # Download tomcat. remote_file '/tmp/tomcat.tar.gz' do source "https://archive.apache.org/dist/tomcat/tomcat-10/v#{node['tomcat']['version']}/bin/apache-tomcat-#{node['tomcat']['version']}.tar.gz" verify "echo '#{node['tomcat']['sha256']} %{path}' | sha256sum -c" action :create end # Extract tomcat to home directory. bash 'Extract Tomcat' do user 'tomcat' cwd '/tmp' code <<-EOH tar -xf tomcat.tar.gz -C /opt/tomcat --strip-components=1 EOH end # Create tomcat service. systemd_unit 'tomcat.service' do content <<~EOU [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 EOU action [:create, :enable] end bash 'add tomcat groups' do user 'root' code <<-EOH sed -i -e '$ i \\ \\ <role rolename="manager-gui"/>\\ <role rolename="admin-gui"/>\\ ' /opt/tomcat/conf/tomcat-users.xml EOH end service 'tomcat' do action :reload end # Configure Apache Reverse Proxy template '/etc/apache2/sites-available/tomcat.conf' do source 'tomcat.conf.erb' end apache2_disable_site '000-default' apache2_enable_site 'tomcat' c2d_startup_script 'tomcat' do source 'tomcat' action :cookbook_file end