問題描述:
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