我的 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_env.PATH
。
所以,你实际上应该设置
newpath: "{{ JAVA_HOME }}/bin:{{ ansible_env.PATH }}"