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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM