首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible -在主机上启动tomcat

Ansible -在主机上启动tomcat
EN

Stack Overflow用户
提问于 2017-11-08 22:33:36
回答 2查看 13K关注 0票数 2

我一直在用ansible playbook在主机上下载并启动tomcat。

这是我的清单主机文件:

代码语言:javascript
复制
[group1]
machine1 ansible_host=10.40.0.168

我的group_vars中有group1.yml文件:

代码语言:javascript
复制
---
ansible_ssh_user: user
ansible_ssh_pass: pass
ansible_sudo_pass: passp

我的策略是:

代码语言:javascript
复制
---
- hosts: group1
  sudo: yes
  tasks:

 - name: Update all packages to the latest version
   apt:
     upgrade: dist

- name: Download tomcat
  get_url: url=http://mirrors.up.pt/pub/apache/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1-fulldocs.tar.gz dest=/opt/apache-tomcat-9.0.1.tar.gz

- name: Unarchive a file that is already on the remote machine
  unarchive:
   src: /opt/apache-tomcat-9.0.1.tar.gz
   dest: /opt/
   remote_src: yes

- name: Run Tomcat
  shell: ./startup.sh
  args:
    chdir: /opt/apache-tomcat-9.0.1/bin

我尝试运行/opt/apache-tomcat-9.0.1/bin文件夹中的./startup.sh来启动tomcat。

我运行以下命令:

代码语言:javascript
复制
ansible-playbook playbookname.yml

如果我在主机上运行./startup.sh,它工作得很好,但是当我从控制机器上运行它时,我得到:

代码语言:javascript
复制
PLAY [group1] **********************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [myname]

TASK [Update all packages to the latest version] ***********************************************************************
ok: [myname]

TASK [Download tomcat] *************************************************************************************************
ok: [myname]

TASK [Unarchive a file that is already on the remote machine] **********************************************************
ok: [myname]

TASK [Run Tomcat] ******************************************************************************************************
changed: [myname]

PLAY RECAP *************************************************************************************************************
myname                       : ok=5    changed=1    unreachable=0    failed=0

在此之后,我尝试打开tomcat,但它不在主机上运行。

如何从ansible启动tomcat?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-09 00:20:29

您应该将其添加为服务,例如:

服务文件: /etc/systemd/system/tomcat.service (它应该在目标机器中)

文件应包含如下内容(根据您的java环境进行调整)

代码语言:javascript
复制
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

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

ExecStart=/opt/tomcat/apache-tomcat-8.0.47/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

然后用下面的systemd和ansible模块启动服务器,

代码语言:javascript
复制
- name: enable tomcat startup
    systemd:
    name: tomcat
    enabled: yes
    state: restarted
    become: true
票数 7
EN

Stack Overflow用户

发布于 2017-11-09 00:03:07

您应该使用系统工具,如Systemd等,这取决于您的操作系统。Ansible应该只创建服务文件并启动服务。运行服务不是Ansible的工作。

可能的方法是:https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-centos-7#install-tomcat

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47182359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档