zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    python3 mock基本使用(转载)
    mock安装(python2)
    Mock简介、场景(转载)
    Fiddler 4的AutoResponder,拦截浏览器重定向返回结果
    .NET 分布式系统架构(有转载部分)
    TCP、IP、HTTP、HTTPS的理解和区别
    根域名,二级域名,子域名的区别
    Restful Api设计浅析
    查询出每门课都大于80分的学生姓名【杭州多测师】【杭州多测师_王sir】
    electron安装+打包
  • 原文地址:https://www.cnblogs.com/wplvqj/p/9202901.html
Copyright © 2011-2022 走看看