Ansible-使用现有jenkins流程,服务正常部署后,查看启动的服务无法正常运行

问题描述:
1)报错提示为密码相关,因为PaaS层对应模块升级版本后,新增了密码加解密功能,即对于配置文件中的明文密码均替换为加密后的密文方式,而该功能对于jdk有版本要求,需要jdk版本1.8及以上的。
2)根据报错中,实际jenkins任务--->调用ansible的playbook,进行部署后启动的程序,使用的java版本是1.7.0_45的,因此从这可以判断jdk版本存在问题。
3)手动重启服务,发现服务能够正常启动且正常。最后发现原因为,手动启动调用的是通过java -version查看到的jdk版本,而通过ansible执行启动时调用到的jdk版本为1.7。
 
 
验证(根哥给的思路方法):
 
[root@IOV_node05 tmp]# cat push_tomcat.yml      //验证yml
---
 
- name: update  service package and restart
  hosts: "{{cHost}}"  
  remote_user: app
  become: yes
  become_user: root
    
  tasks:
    - name: print jdk
      shell: java -version
      register: rc
    - debug: msg=rc.std_out
 
 
[root@IOV_node05 tmp]# ansible-playbook  push_tomcat.yml  -e "cHost=192.168.18.163" -vvv      //临时验证执行

登录到对应服务器验证环境变量配置的java版本:

发现ansible调用jdk版本和服务器上显示的java版本不一致
 
 
出现上述情况最终原因分析:
ansible执行start.sh时,读取到的环境变量是依据/usr/bin/java读取到的
解决方法:
1)卸载服务器上老版本的jdk;
2)将java软连接到新jdk版本的java上,如:ln -sv /usr/java/jdk1.8.0_162/bin/java /usr/bin/java

注意:以后线上环境验证java版本时,使用:# /usr/bin/java -version

[root@IOV_node05 tmp]# ansible-playbook  push_tomcat.yml  -e "cHost=192.168.18.47" -vvv

直接使用java -version实际读取的是通过profile或者profile.d下指定的,存在ansible运行调用的环境不一致的情况,所以可能出现上述的情况。
 
最好的办法是将以前老版本的jdk卸载
 
 
 
另一种设置java环境变量的方式:
# alternatives --display java
# alternatives --config java
# alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_162/bin/java 1
原文地址:https://www.cnblogs.com/wplvqj/p/9202901.html