You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ansible.builitin.env获取PATH异常,跨发行版Java验证失败问题

问题详情

我的Ansible角色执行以下操作:

  • 创建名为weblogic的用户,指定bash为Shell,配置主目录并将其加入weblogic组
  • 将JDK解压到oracle_home目录,设置归属为weblogic用户

设置环境变量任务

- name: Set
  become: true
  become_user: weblogic
  set_fact:
    newpath: "{{JAVA_HOME}}/bin:{{lookup('ansible.builtin.env', 'PATH')}}"

执行后得到的newpath值为:

"/opt/oracle/jdk1.8.0_431/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

验证任务异常情况

- name : Validate Java
  become: true
  become_user: weblogic
  command: "java -version"
  environment:
   JAVA_HOME: "{{JAVA_HOME}}"
   PATH: "{{newpath}}"
  register: javaver
  • 在Ubuntu 24系统上,检测到的Java路径为/usr/bin/java,并非预期的JDK路径
  • 在SUSE SLES15系统上,能正常得到预期的Java路径

手动执行测试结果

直接以weblogic用户身份在两台主机上执行以下命令:

export JAVA_HOME=/opt/oracle/jdk1.8.0_431
export PATH="/opt/oracle/jdk1.8.0_431/bin:$PATH"
java -version

结果差异:

  • Ubuntu主机报错:
bash: /opt/oracle/jdk1.8.0_431/bin/java: No such file or directory
  • SUSE主机正常输出:
java version "1.8.0_431"

内容的提问来源于stack exchange,提问作者groovehunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:20:07