ansible 中的路径问题

问题描述 投票:0回答:1

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

  • 在组weblogic中使用bash和homedir创建用户weblogic

  • 将 jdk 解压到由 weblogic 用户拥有的 oracle_home 目录中

最后:

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

所以新路径是

"/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 中

在 SUSE SLES15 上我得到了想要的 java

我直接在两台主机上以用户 weblogic 身份进行检查:

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

java-版本

在 ubuntu 主机上: bash: /opt/oracle/jdk1.8.0_431/bin/java: 没有这样的文件或目录

在 SUSE 上: java版本“1.8.0_431”

PS 我的问题标题不是很具体,请随意编辑

ansible environment-variables
1个回答
0
投票

查找为您提供来自控制器而不是受管节点的信息。
在这里,您需要受管节点信息,假设您在剧本中收集了事实,

ansible_env.PATH

所以,你实际上应该设置

newpath: "{{ JAVA_HOME }}/bin:{{ ansible_env.PATH }}"
© www.soinside.com 2019 - 2024. All rights reserved.