• 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
  • 相关阅读:
    python knn自我实践
    NumPy常用函数总结
    Max Sum
    A Mathematical Curiosity
    设计模式 策略模式 以角色游戏为背景
    背包问题
    搬寝室 hdu
    实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)
    Android 面试精华题目总结
    Java自定义比较器Comparator
  • 原文地址:https://www.cnblogs.com/wplvqj/p/9202901.html
Copyright © 2020-2023  润新知