Ansible env lookup无法获取已定义的ORACLE_HOME环境变量求助
问题原因与解决方法
你遇到的问题核心是上下文混淆:
lookup('ansible.builtin.env', 'ORACLE_HOME')读取的是Ansible控制节点(运行playbook的机器)的环境变量,如果控制节点未设置该变量,自然返回空字符串。ansible_env是Ansible通过facts收集到的目标主机(你要管理的远程机器)上的环境变量,所以能看到正确定义的ORACLE_HOME。
正确获取目标主机ORACLE_HOME的写法
直接调用ansible_env中的对应变量即可:
- name: Print oracle_home from target host debug: msg: "{{ ansible_env.ORACLE_HOME }}"
额外说明(若需读取控制节点变量)
如果确实需要读取控制节点的ORACLE_HOME,需要在控制节点上预先设置该环境变量,或者执行playbook时临时传递:
ORACLE_HOME=/your/oracle/path ansible-playbook your-playbook.yml
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

