一键部署tomcat

环境准备:

客户端:web01:ip:192.168.10.7、172.16.1.7,主机名:web01
       web02:ip:192.168.10.8、172.16.1.8,主机名:web02
       web03:ip:192.168.10.9、172.16.1.9,主机名:web03
       db01:ip:192.168.10.51、172.16.1.51,主机名:db01
管理端:m01:ip:192.168.10.61,主机名:m01,项目目录:/server/project_roles/

管理端与客户端的ssh密钥认证已提前做好。

1、管理端

管理端:m01:ip:192.168.10.61,主机名:m01

1)创建项目目录

[root@m01 /server/project_roles]#mkdir -p tomcat/{tasks,files}

2)tasks

[root@m01 /server/project_roles]#vim tomcat/tasks/main.yml
- name: 1.分发jdk软件包
  copy:
    src: jdk-8u351-linux-x64.rpm
    dest: /tmp/
- name: 2.安装jdk
  yum:
    name: /tmp/jdk-8u351-linux-x64.rpm
    state: present
- name: 3.创建/app/tools/目录
  file:
    name: /app/tools/
    state: directory
- name: 4.分发tomcat软件包
  unarchive:
    src: apache-tomcat-9.0.76.tar.gz
    dest: /app/tools/
- name: 5.创建软连接
  file:
    src: /app/tools/apache-tomcat-9.0.76
    dest: /app/tools/tomcat
    state: link
- name: 6.启动tomcat
  shell: /app/tools/tomcat/bin/startup.sh &

3)下载tomcat软件包

官网:https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.tar.gz

把tomcat包下载到tomcat/files/目录中

[root@m01 ~]#curl -o /server/project_roles/tomcat/files/apache-tomcat-9.0.76.tar.gz  https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.tar.gz

4)下载jdk

官网:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

下载到tomcat/files/目录中,下载过程略。这里使用jdk-8u351-linux-x64.rpm版本

[root@m01 /server/project_roles/tomcat/files]#tree
.
├── apache-tomcat-9.0.76.tar.gz
└── jdk-8u351-linux-x64.rpm

0 directories, 2 files
[root@m01 /server/project_roles/tomcat/files]#

5)剧本入口文件

剧本入口文件:top.yml

tomcat部署在web03(172.16.1.9)上面

#- hosts: 172.16.1.7
#  gather_facts: no
#  roles:
#    - role: nginx
- hosts: 172.16.1.9
  gather_facts: no
  roles:
    - role: tomcat

目录结构:

|---hosts
├── tomcat
│   ├── files
│   │   └── apache-tomcat-9.0.76.tar.gz
│   └── tasks
│       └── main.yml
└── top.yml

5)执行剧本

[root@m01 /server/project_roles]#ansible-playbook -i hosts top.yml

注意事项:

在剧本中启动tomcat并没有成功。

手动启动Tomcat服务,在web03端执行命令:

[root@web03 ~]# /app/tools/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /app/tools/tomcat
Using CATALINA_HOME:   /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@web03 ~]# /app/tools/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /app/tools/tomcat
Using CATALINA_HOME:   /app/tools/tomcat
Using CATALINA_TMPDIR: /app/tools/tomcat/temp
Using JRE_HOME:       /usr
Using CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:  
Tomcat started.

此时。tomcat启动成功,默认端口:8080

2、浏览器打开网站

浏览器打开:192.168.10.9:8080,看到如下界面:则表示tomcat服务部署成功

3、剧本中启动tomcat的问题

在前面的剧本中,tomcat并没有启动成功。

剧本中,启动Tomcat的代码修改如下:

- name: 6.启动tomcat
  shell: /app/tools/tomcat/bin/startup.sh
  register: tomcat_result
- name: debug
  debug:
    msg: "{{ tomcat_result }}"

重新执行剧本,使用–start-at-task选项,从“启动tomcat”的tasks开始执行到最后,前面的步骤不执行

[root@m01 /server/project_roles]#ansible-playbook -i hosts --start-at-task "6.启动tomcat"  top.yml 

输出的信息如下:

[root@m01 /server/project_roles]#ansible-playbook -i hosts --start-at-task "6.启动tomcat"  top.yml 

PLAY [172.16.1.9] ***********
TASK [6.启动tomcat] **********
changed: [172.16.1.9]
TASK [tomcat : debug] ***********
TASK [tomcat : debug] ********************************************************************************************
ok: [172.16.1.9] => {
    "msg": {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": true, 
        "cmd": "/app/tools/tomcat/bin/startup.sh", 
        "delta": "0:00:00.033082", 
        "end": "2023-06-18 09:31:09.550831", 
        "failed": false, 
        "rc": 0, 
        "start": "2023-06-18 09:31:09.517749", 
        "stderr": "", 
        "stderr_lines": [], 
        "stdout": "Using CATALINA_BASE:   /app/tools/tomcat\nUsing CATALINA_HOME:   /app/tools/tomcat\nUsing CATALINA_TMPDIR: /app/tools/tomcat/temp\nUsing JRE_HOME:        /usr\nUsing CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar\nUsing CATALINA_OPTS:   \nTomcat started.", 
        "stdout_lines": [
            "Using CATALINA_BASE:   /app/tools/tomcat", 
            "Using CATALINA_HOME:   /app/tools/tomcat", 
            "Using CATALINA_TMPDIR: /app/tools/tomcat/temp", 
            "Using JRE_HOME:        /usr", 
            "Using CLASSPATH:       /app/tools/tomcat/bin/bootstrap.jar:/app/tools/tomcat/bin/tomcat-juli.jar", 
            "Using CATALINA_OPTS:   ", 
            "Tomcat started."
        ]
    }
}

PLAY RECAP ********************************
172.16.1.9    : ok=1   changed=1  unreachable=0  failed=1   skipped=0   rescued=0    ignored=0   
[root@m01 /server/project_roles]#

提示信息是成功启动的,但实际上并没有启动成功。为什么?其实是环境变量的问题。把剧本中的“/app/tools/tomcat/bin/startup.sh ”修改如下:

nohup /app/tools/tomcat/bin/startup.sh &

如下:

再执行剧本,Tomcat就成功启动了。

tomcat日志:/app/tools/tomcat/logs/catalina.out