Ansible - 在主机上启动 tomcat
Ansible - start tomcat on host
我一直在研究 ansible 剧本,以便在主机中下载和启动 tomcat。
这是我的清单主机文件:
[group1]
machine1 ansible_host=10.40.0.168
我的 group_vars 中有 group1.yml 文件:
---
ansible_ssh_user: user
ansible_ssh_pass: pass
ansible_sudo_pass: passp
我的剧本是:
---
- 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。
我运行以下命令:
ansible-playbook playbookname.yml
如果我在主机上 运行 ./startup.sh
它工作正常,但是当我从控制机器 运行 它时,我得到:
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,但主机上没有 运行ning。
如何从 ansible 开始 tomcat?
您应该为此使用系统工具,例如 Systemd 等,具体取决于您的 OS。
Ansible 应该只创建服务文件并启动服务。 运行 servie 不是 Ansible 的工作。
您应该将其添加为服务,例如:
服务文件:/etc/systemd/system/tomcat.service(应该在目标机器上)
文件应包含如下内容,(根据您的 java 环境进行调整)
[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 模块启动服务器,
- name: enable tomcat startup
systemd:
name: tomcat
enabled: yes
state: restarted
become: true
我一直在研究 ansible 剧本,以便在主机中下载和启动 tomcat。
这是我的清单主机文件:
[group1]
machine1 ansible_host=10.40.0.168
我的 group_vars 中有 group1.yml 文件:
---
ansible_ssh_user: user
ansible_ssh_pass: pass
ansible_sudo_pass: passp
我的剧本是:
---
- 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。
我运行以下命令:
ansible-playbook playbookname.yml
如果我在主机上 运行 ./startup.sh
它工作正常,但是当我从控制机器 运行 它时,我得到:
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,但主机上没有 运行ning。
如何从 ansible 开始 tomcat?
您应该为此使用系统工具,例如 Systemd 等,具体取决于您的 OS。 Ansible 应该只创建服务文件并启动服务。 运行 servie 不是 Ansible 的工作。
您应该将其添加为服务,例如:
服务文件:/etc/systemd/system/tomcat.service(应该在目标机器上)
文件应包含如下内容,(根据您的 java 环境进行调整)
[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 模块启动服务器,
- name: enable tomcat startup
systemd:
name: tomcat
enabled: yes
state: restarted
become: true